Skip to content

Commit 38ce83d

Browse files
Merge pull request #8 from PandaTechAM/development
Update package to 5.1.0 and add unique index methods
2 parents 77bb941 + ec7743a commit 38ce83d

File tree

2 files changed

+38
-2
lines changed

2 files changed

+38
-2
lines changed

src/EFCore.PostgresExtensions/EFCore.PostgresExtensions.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@
88
<PackageReadmeFile>Readme.md</PackageReadmeFile>
99
<Authors>Pandatech</Authors>
1010
<Copyright>MIT</Copyright>
11-
<Version>5.0.0</Version>
11+
<Version>5.1.0</Version>
1212
<PackageId>Pandatech.EFCore.PostgresExtensions</PackageId>
1313
<Title>Pandatech.EFCore.PostgresExtensions</Title>
1414
<PackageTags>Pandatech, library, EntityFrameworkCore, PostgreSQL, For Update, Lock, LockingSyntax, Bulk insert, BinaryCopy</PackageTags>
1515
<Description>The Pandatech.EFCore.PostgresExtensions library enriches Entity Framework Core applications with advanced PostgreSQL functionalities, starting with the ForUpdate locking syntax and BulkInsert function. Designed for seamless integration, this NuGet package aims to enhance the efficiency and capabilities of EF Core models when working with PostgreSQL, with the potential for further PostgreSQL-specific extensions.</Description>
1616
<RepositoryUrl>https://github.com/PandaTechAM/be-lib-efcore-postgres-extensions</RepositoryUrl>
17-
<PackageReleaseNotes>Removed bulk copy totally. Added Natural Sort functionality</PackageReleaseNotes>
17+
<PackageReleaseNotes>Added support to generate unique index on encrypted columns</PackageReleaseNotes>
1818
</PropertyGroup>
1919

2020
<ItemGroup>

src/EFCore.PostgresExtensions/Extensions/MigrationBuilderExtensions.cs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,40 @@ public static void CreateNaturalSortKeyFunction(this MigrationBuilder migrationB
2323
{
2424
migrationBuilder.Sql(PgFunctionHelpers.GetNaturalSortKeyFunction());
2525
}
26+
27+
public static MigrationBuilder CreateUniqueIndexOnEncryptedColumn(this MigrationBuilder migrationBuilder,
28+
string tableName,
29+
string columnName,
30+
string? condition)
31+
{
32+
var indexName = $"ix_{tableName}_{columnName}";
33+
var whereClause = !string.IsNullOrWhiteSpace(condition) ? $" WHERE {condition}" : string.Empty;
34+
35+
var sql = $@"
36+
CREATE UNIQUE INDEX {indexName}
37+
ON {tableName} (substr({columnName}, 1, 64)){whereClause};";
38+
39+
migrationBuilder.Sql(sql);
40+
41+
return migrationBuilder;
42+
}
43+
44+
public static MigrationBuilder CreateUniqueIndexOnEncryptedColumn(this MigrationBuilder migrationBuilder,
45+
string tableName,
46+
string columnName)
47+
{
48+
return migrationBuilder.CreateUniqueIndexOnEncryptedColumn(tableName, columnName, null);
49+
}
50+
51+
public static MigrationBuilder DropUniqueIndexOnEncryptedColumn(this MigrationBuilder migrationBuilder,
52+
string tableName,
53+
string columnName)
54+
{
55+
var indexName = $"ix_{tableName}_{columnName}";
56+
57+
migrationBuilder.Sql($@"
58+
DROP INDEX {indexName};");
59+
60+
return migrationBuilder;
61+
}
2662
}

0 commit comments

Comments
 (0)