Skip to content

Commit f6a47d0

Browse files
authored
Only display "Project code already used" if we're certain. (#1600)
1 parent f61ffcb commit f6a47d0

File tree

3 files changed

+7
-4
lines changed

3 files changed

+7
-4
lines changed

backend/LexData/DbError.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ public enum DbErrorCode
88
{
99
Unknown,
1010
Duplicate,
11+
DuplicateProjectCode,
1112
}
1213

1314
public class DbError
@@ -19,9 +20,10 @@ public static DbError CreateErrorFrom(NpgsqlException exception)
1920

2021
public static DbError CreateErrorFrom(PostgresException exception)
2122
{
22-
return exception.SqlState switch
23+
return exception switch
2324
{
24-
PostgresErrorCodes.UniqueViolation => new DbError($"{exception.TableName.Humanize().Singularize(false)} already exists", DbErrorCode.Duplicate),
25+
{ SqlState: PostgresErrorCodes.UniqueViolation, ConstraintName: "IX_Projects_Code" } => new DbError($"{exception.TableName.Humanize().Singularize(false)} already exists", DbErrorCode.DuplicateProjectCode),
26+
{ SqlState: PostgresErrorCodes.UniqueViolation } => new DbError($"{exception.TableName.Humanize().Singularize(false)} already exists", DbErrorCode.Duplicate),
2527
_ => new DbError(exception.Message)
2628
};
2729
}
@@ -44,4 +46,4 @@ public DbError(string message, DbErrorCode code = DbErrorCode.Unknown)
4446

4547
public string Message { get; }
4648
public DbErrorCode Code { get; }
47-
}
49+
}

frontend/schema.graphql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1205,6 +1205,7 @@ enum CreateProjectResult {
12051205
enum DbErrorCode {
12061206
UNKNOWN
12071207
DUPLICATE
1208+
DUPLICATE_PROJECT_CODE
12081209
}
12091210

12101211
enum FeatureFlag {

frontend/src/routes/(authenticated)/project/create/+page.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@
6565
forceDraft
6666
});
6767
if (result.error) {
68-
if (result.error.byCode(DbErrorCode.Duplicate)) {
68+
if (result.error.byCode(DbErrorCode.DuplicateProjectCode)) {
6969
$errors.code = [$t('project.create.code_exists')];
7070
} else {
7171
$message = result.error.message;

0 commit comments

Comments
 (0)