Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -435,4 +435,12 @@ CmdScale.EntityFrameworkCore.TimescaleDB.Example.DataAccess.DbFirst/

# AI
CLAUDE.md
.claude
.claude

# Code coverage report
coverage
nul

# Stryker.NET mutation testing output
**/StrykerOutput/
stryker-config.json.user
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ namespace CmdScale.EntityFrameworkCore.TimescaleDB.Design.Scaffolding
/// Applies continuous aggregate annotations to scaffolded database views.
/// Note: Continuous aggregates in TimescaleDB are materialized views, so they appear as tables/views in scaffolding.
/// </summary>
internal sealed class ContinuousAggregateAnnotationApplier : IAnnotationApplier
public sealed class ContinuousAggregateAnnotationApplier : IAnnotationApplier
{
public void ApplyAnnotations(DatabaseTable table, object featureInfo)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ namespace CmdScale.EntityFrameworkCore.TimescaleDB.Design.Scaffolding
/// <summary>
/// Extracts continuous aggregate metadata from a TimescaleDB database for scaffolding.
/// </summary>
internal sealed class ContinuousAggregateScaffoldingExtractor : ITimescaleFeatureExtractor
public sealed class ContinuousAggregateScaffoldingExtractor : ITimescaleFeatureExtractor
{
internal sealed record ContinuousAggregateInfo(
public sealed record ContinuousAggregateInfo(
string MaterializedViewName,
string Schema,
string ViewDefinition,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ namespace CmdScale.EntityFrameworkCore.TimescaleDB.Design.Scaffolding
/// <summary>
/// Applies hypertable annotations to scaffolded database tables.
/// </summary>
internal sealed class HypertableAnnotationApplier : IAnnotationApplier
public sealed class HypertableAnnotationApplier : IAnnotationApplier
{
public void ApplyAnnotations(DatabaseTable table, object featureInfo)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ namespace CmdScale.EntityFrameworkCore.TimescaleDB.Design.Scaffolding
/// <summary>
/// Extracts hypertable metadata from a TimescaleDB database for scaffolding.
/// </summary>
internal sealed class HypertableScaffoldingExtractor : ITimescaleFeatureExtractor
public sealed class HypertableScaffoldingExtractor : ITimescaleFeatureExtractor
{
internal sealed record HypertableInfo(
public sealed record HypertableInfo(
string TimeColumnName,
string ChunkTimeInterval,
bool CompressionEnabled,
Expand Down Expand Up @@ -74,7 +74,8 @@ private static void GetHypertableSettings(
column_name,
dimension_number,
num_partitions,
EXTRACT(EPOCH FROM time_interval) * 1000 AS time_interval_microseconds
EXTRACT(EPOCH FROM time_interval) * 1000 AS time_interval_microseconds,
integer_interval
FROM timescaledb_information.dimensions
ORDER BY hypertable_schema, hypertable_name, dimension_number;";

Expand Down Expand Up @@ -111,15 +112,21 @@ FROM timescaledb_information.dimensions

if (!reader.IsDBNull(4) && reader.GetInt32(4) > 0)
{
// Space dimension
// Hash dimension (space partitioning)
dimension = Dimension.CreateHash(columnName, reader.GetInt32(4));
}
else if (!reader.IsDBNull(5))
{
// Time dimension
// Time-based range dimension
long interval = (long)reader.GetDouble(5);
dimension = Dimension.CreateRange(columnName, interval.ToString());
}
else if (!reader.IsDBNull(6))
{
// Integer-based range dimension
long integerInterval = reader.GetInt64(6);
dimension = Dimension.CreateRange(columnName, integerInterval.ToString());
}
else continue;

info.AdditionalDimensions.Add(dimension);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ namespace CmdScale.EntityFrameworkCore.TimescaleDB.Design.Scaffolding
/// <summary>
/// Interface for applying TimescaleDB feature annotations to scaffolded database tables.
/// </summary>
internal interface IAnnotationApplier
public interface IAnnotationApplier
{
/// <summary>
/// Applies annotations to the database table based on the feature metadata.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ namespace CmdScale.EntityFrameworkCore.TimescaleDB.Design.Scaffolding
/// <summary>
/// Interface for extracting TimescaleDB feature metadata from a database connection.
/// </summary>
internal interface ITimescaleFeatureExtractor
public interface ITimescaleFeatureExtractor
{
/// <summary>
/// Extracts feature metadata from the database and returns a dictionary keyed by (schema, tableName).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ namespace CmdScale.EntityFrameworkCore.TimescaleDB.Design.Scaffolding
/// <summary>
/// Applies reorder policy annotations to scaffolded database tables.
/// </summary>
internal sealed class ReorderPolicyAnnotationApplier : IAnnotationApplier
public sealed class ReorderPolicyAnnotationApplier : IAnnotationApplier
{
public void ApplyAnnotations(DatabaseTable table, object featureInfo)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ namespace CmdScale.EntityFrameworkCore.TimescaleDB.Design.Scaffolding
/// <summary>
/// Extracts reorder policy metadata from a TimescaleDB database for scaffolding.
/// </summary>
internal sealed class ReorderPolicyScaffoldingExtractor : ITimescaleFeatureExtractor
public sealed class ReorderPolicyScaffoldingExtractor : ITimescaleFeatureExtractor
{
internal sealed record ReorderPolicyInfo(
public sealed record ReorderPolicyInfo(
string IndexName,
DateTime? InitialStart,
string? ScheduleInterval,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="EFCore.NamingConventions" Version="9.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.0">
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.8">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
Expand All @@ -31,6 +31,7 @@

<ItemGroup>
<ProjectReference Include="..\CmdScale.EntityFrameworkCore.TimescaleDB\CmdScale.EntityFrameworkCore.TimescaleDB.csproj" />
<ProjectReference Include="..\CmdScale.EntityFrameworkCore.TimescaleDB.Design\CmdScale.EntityFrameworkCore.TimescaleDB.Design.csproj" />
</ItemGroup>

<ItemGroup>
Expand Down
Loading
Loading