diff --git a/src/ReC.API/appsettings.json b/src/ReC.API/appsettings.json index 72f377b..1f02e0a 100644 --- a/src/ReC.API/appsettings.json +++ b/src/ReC.API/appsettings.json @@ -8,6 +8,14 @@ "RecAction": { "MaxConcurrentInvocations": 5 }, + "SqlExceptionTranslator": { + "ErrorMessages": { + "515": "{Operation} '{Target}' failed because a required field was not provided or was null. Verify mandatory values and retry.", + "547": "{Operation} '{Target}' failed because one or more referenced entities do not exist or violate relational rules. Please verify identifiers and constraints.", + "2601": "{Operation} '{Target}' failed because the data conflicts with a unique constraint. Remove duplicate values and retry.", + "2627": "{Operation} '{Target}' failed because the data conflicts with a unique constraint. Remove duplicate values and retry." + } + }, "AddedWho": "ReC.API", "FakeProfileId": 2 } \ No newline at end of file diff --git a/src/ReC.Application/Common/Options/SqlExceptionTranslatorOptions.cs b/src/ReC.Application/Common/Options/SqlExceptionTranslatorOptions.cs new file mode 100644 index 0000000..0d91077 --- /dev/null +++ b/src/ReC.Application/Common/Options/SqlExceptionTranslatorOptions.cs @@ -0,0 +1,24 @@ +namespace ReC.Application.Common.Options; + +public class SqlExceptionTranslatorOptions +{ + public HashSet ErrorNumbers { get; private set; } = []; + + private Dictionary _badRequestMessages = new() + { + [515] = "{Operation} '{Target}' failed because a required field was not provided or was null. Verify mandatory values and retry.", + [547] = "{Operation} '{Target}' failed because one or more referenced entities do not exist or violate relational rules. Please verify identifiers and constraints.", + [2601] = "{Operation} '{Target}' failed because the data conflicts with a unique constraint. Remove duplicate values and retry.", + [2627] = "{Operation} '{Target}' failed because the data conflicts with a unique constraint. Remove duplicate values and retry." + }; + + public Dictionary ErrorMessages + { + get => _badRequestMessages; + set + { + _badRequestMessages = value; + ErrorNumbers = [.. value.Keys]; + } + } +}