From aadb67c447c8bf8d2e36532f52f0169edd5a8bc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gild=C3=A9ric=20DERUETTE?= Date: Wed, 17 Apr 2024 17:48:47 +0200 Subject: [PATCH] =?UTF-8?q?[i18n]=20Extraction=20du=20script=20d'insertion?= =?UTF-8?q?=20dans=20un=20fichier=20s=C3=A9par=C3=A9=20Fixes=20#174?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GeneratorRegistration.cs | 1 + .../Procedural/AbstractSchemaGenerator.cs | 103 +++++++++++------- .../Procedural/ProceduralSqlConfig.cs | 5 + .../Procedural/ProceduralSqlGenerator.cs | 1 + TopModel.Generator.Sql/sql.config.json | 4 + docs/generator/sql.md | 7 ++ .../angular/topmodel.config.schema.json | 4 + .../csharp/topmodel.config.schema.json | 4 + .../database/topmodel.config.schema.json | 4 + .../focus/topmodel.config.schema.json | 4 + .../jpa/topmodel.config.schema.json | 4 + .../open-api/topmodel.config.schema.json | 4 + samples/generators/pg/src/01_tables.sql | 16 +++ samples/generators/pg/src/02_fk_indexes.sql | 42 +++++++ samples/generators/pg/src/06_resources.sql | 25 +++++ samples/generators/pg/topmodel.config | 2 + .../generators/pg/topmodel.config.schema.json | 4 + .../php/topmodel.config.schema.json | 4 + .../ssdt/topmodel.config.schema.json | 4 + .../translation/topmodel.config.schema.json | 4 + samples/model/pg.topmodel.lock | 1 + 21 files changed, 206 insertions(+), 41 deletions(-) create mode 100644 samples/generators/pg/src/06_resources.sql diff --git a/TopModel.Generator.Sql/GeneratorRegistration.cs b/TopModel.Generator.Sql/GeneratorRegistration.cs index 4e3ee422..01dee316 100644 --- a/TopModel.Generator.Sql/GeneratorRegistration.cs +++ b/TopModel.Generator.Sql/GeneratorRegistration.cs @@ -31,6 +31,7 @@ public void Register(IServiceCollection services, SqlConfig config, int number) CombinePath(config.OutputDirectory, config.Procedural, c => c.TypeFile); CombinePath(config.OutputDirectory, config.Procedural, c => c.UniqueKeysFile); CombinePath(config.OutputDirectory, config.Procedural, c => c.CommentFile); + CombinePath(config.OutputDirectory, config.Procedural, c => c.ResourceFile); services.AddGenerator(config, number); } diff --git a/TopModel.Generator.Sql/Procedural/AbstractSchemaGenerator.cs b/TopModel.Generator.Sql/Procedural/AbstractSchemaGenerator.cs index 87e347a0..b61055ca 100644 --- a/TopModel.Generator.Sql/Procedural/AbstractSchemaGenerator.cs +++ b/TopModel.Generator.Sql/Procedural/AbstractSchemaGenerator.cs @@ -106,6 +106,7 @@ public void GenerateSchemaScript(IEnumerable classes) SqlFileWriter? writerType = null; SqlFileWriter? writerUk = null; SqlFileWriter? writerComment = null; + SqlFileWriter? writerResource = null; if (Config.TypeFile != null) { @@ -122,6 +123,11 @@ public void GenerateSchemaScript(IEnumerable classes) writerComment = new SqlFileWriter(Config.CommentFile, _logger); } + if (Config.ResourceFile != null) + { + writerResource = new SqlFileWriter(Config.ResourceFile, _logger); + } + var appName = classes.First().Namespace.App; writerCrebas.WriteLine("-- =========================================================================================== "); @@ -148,10 +154,16 @@ public void GenerateSchemaScript(IEnumerable classes) writerComment?.WriteLine("-- Description : Script de création des commentaires. "); writerComment?.WriteLine("-- =========================================================================================== "); + writerResource?.WriteLine("-- =========================================================================================== "); + writerResource?.WriteLine($"-- Application Name : {appName} "); + writerResource?.WriteLine("-- Script Name : " + Config.ResourceFile?.Split('/').Last()); + writerResource?.WriteLine("-- Description : Script de création des resources (libellés traduits). "); + writerResource?.WriteLine("-- =========================================================================================== "); + var foreignKeys = classes .OrderBy(c => c.SqlName) .Where(c => c.IsPersistent && !c.Abstract && classes.Contains(c)) - .SelectMany(classe => WriteTableDeclaration(classe, writerCrebas, writerUk, writerType, writerComment, classes.ToList())) + .SelectMany(classe => WriteTableDeclaration(classe, writerCrebas, writerUk, writerType, writerComment, writerResource, classes.ToList())) .ToList(); if (_config.TranslateProperties!.Value || _config.TranslateReferences!.Value) @@ -162,6 +174,7 @@ public void GenerateSchemaScript(IEnumerable classes) writerType?.Dispose(); writerUk?.Dispose(); writerComment?.Dispose(); + writerResource?.Dispose(); using var writer = new SqlFileWriter(Config.IndexFKFile, _logger); @@ -185,7 +198,7 @@ public void GenerateSchemaScript(IEnumerable classes) }; var targetProperty = new RegularProperty() { - Name = "TradKey", + Name = "ResourceKey", Class = targetClass }; var resourceProperties = classes.Where(c => c.DefaultProperty != null && c.Values.Count() > 0 && c.Enum).Select(c => c.DefaultProperty!); @@ -374,6 +387,11 @@ private string Quote(string name) return !UseQuotes ? name : $@"""{name}"""; } + private string SingleQuote(string name) + { + return $@"'{name.Replace("'", "''")}'"; + } + /// /// Ecrit dans le writer le script d'insertion dans la table staticTable ayant pour model modelClass. /// @@ -388,38 +406,6 @@ private void WriteInsert(SqlFileWriter writer, Class modelClass, IEnumerable().Where(p => p.Label != null).Count() > 0) - { - writer.WriteLine(); - writer.WriteLine("/**\t\tInitialisation des traductions des propriétés de la table " + modelClass.SqlName + "\t\t**/"); - foreach (var lang in _translationStore.Translations.Keys) - { - foreach (var property in modelClass.Properties.OfType()) - { - if (property.Label != null) - { - writer.WriteLine($@"INSERT INTO {_config.ResourcesTableName}(TRAD_KEY, LOCALE, LABEL) VALUES(""{property.ResourceKey}"", ""{(string.IsNullOrEmpty(lang) ? "null" : lang)}"", ""{_translationStore.GetTranslation(property, lang)}"");"); - } - } - } - } - - if (modelClass.DefaultProperty != null && modelClass.Values.Count() > 0 && _config.TranslateReferences!.Value) - { - writer.WriteLine(); - writer.WriteLine("/**\t\tInitialisation des traductions des valeurs de la table " + modelClass.SqlName + "\t\t**/"); - foreach (var lang in _translationStore.Translations.Keys) - { - foreach (var val in modelClass.Values) - { - writer.WriteLine(@$"INSERT INTO {_config.ResourcesTableName}(TRAD_KEY, LOCALE, LABEL) VALUES(""{val.ResourceKey}"", ""{(string.IsNullOrEmpty(lang) ? "null" : lang)}"", ""{_translationStore.GetTranslation(val, lang)}"");"); - } - } - } - } - writer.WriteLine(); } @@ -455,22 +441,51 @@ private void WriteResourceTableDeclaration(SqlFileWriter writer) writer.WriteLine(" * Création de ta table " + tableName + " contenant les traductions"); writer.WriteLine(" **/"); writer.WriteLine($"create table {_config.ResourcesTableName} ("); - writer.WriteLine(1, "TRAD_KEY varchar(100) not null,"); + writer.WriteLine(1, "RESOURCE_KEY varchar(255),"); writer.WriteLine(1, "LOCALE varchar(10),"); - writer.WriteLine(1, "LABEL varchar(100),"); - writer.WriteLine(1, "constraint PK_KEY_LOCALE primary key (TRAD_KEY, LOCALE)"); + writer.WriteLine(1, "LABEL varchar(255),"); + writer.WriteLine(1, "constraint PK_KEY_LOCALE primary key (RESOURCE_KEY, LOCALE)"); writer.WriteLine(")"); writer.WriteLine("/**"); - writer.WriteLine(" * Création de l'index pour " + tableName + " (TRAD_KEY, LOCALE)"); + writer.WriteLine(" * Création de l'index pour " + tableName + " (RESOURCE_KEY, LOCALE)"); writer.WriteLine(" **/"); - writer.WriteLine("create index " + Quote($"IDX_{_config.ResourcesTableName}_TRAD_KEY_LOCALE") + " on " + tableName + " ("); - writer.WriteLine("\t" + "TRAD_KEY, LOCALE" + " ASC"); + writer.WriteLine("create index " + Quote($"IDX_{_config.ResourcesTableName}_RESOURCE_KEY_LOCALE") + " on " + tableName + " ("); + writer.WriteLine("\t" + "RESOURCE_KEY, LOCALE" + " ASC"); writer.WriteLine($"){BatchSeparator}"); writer.WriteLine(); } } + private void WriteResources(SqlFileWriter writer, Class modelClass) + { + if (_config.TranslateProperties!.Value && modelClass.Properties.OfType().Where(p => p.Label != null).Count() > 0 && modelClass.ModelFile != null) + { + writer.WriteLine(); + writer.WriteLine("/**\t\tInitialisation des traductions des propriétés de la table " + modelClass.SqlName + "\t\t**/"); + foreach (var lang in _translationStore.Translations.Keys) + { + foreach (var property in modelClass.Properties.OfType().Where(p => p.Label != null)) + { + writer.WriteLine($@"INSERT INTO {_config.ResourcesTableName}(RESOURCE_KEY, LOCALE, LABEL) VALUES({SingleQuote(property.ResourceKey)}, {(string.IsNullOrEmpty(lang) ? "null" : @$"{SingleQuote(lang)}")}, {SingleQuote(_translationStore.GetTranslation(property, lang))});"); + } + } + } + + if (modelClass.DefaultProperty != null && modelClass.Values.Count() > 0 && _config.TranslateReferences!.Value) + { + writer.WriteLine(); + writer.WriteLine("/**\t\tInitialisation des traductions des valeurs de la table " + modelClass.SqlName + "\t\t**/"); + foreach (var lang in _translationStore.Translations.Keys) + { + foreach (var val in modelClass.Values) + { + writer.WriteLine(@$"INSERT INTO {_config.ResourcesTableName}(RESOURCE_KEY, LOCALE, LABEL) VALUES({SingleQuote(val.ResourceKey)}, {(string.IsNullOrEmpty(lang) ? "null" : @$"{SingleQuote(lang)}")}, ""{SingleQuote(_translationStore.GetTranslation(val, lang))});"); + } + } + } + } + /// /// Déclaration de la table. /// @@ -479,8 +494,9 @@ private void WriteResourceTableDeclaration(SqlFileWriter writer) /// Flux d'écriture Unique Key. /// Flux d'écritures des types. /// Flux d'écritures des commentaires. + /// Flux d'écritures des commentaires. /// Liste des propriétés étrangères persistentes. - private IEnumerable WriteTableDeclaration(Class classe, SqlFileWriter writerCrebas, SqlFileWriter? writerUk, SqlFileWriter? writerType, SqlFileWriter? writerComment, IList availableClasses) + private IEnumerable WriteTableDeclaration(Class classe, SqlFileWriter writerCrebas, SqlFileWriter? writerUk, SqlFileWriter? writerType, SqlFileWriter? writerComment, SqlFileWriter? writerResources, IList availableClasses) { var fkPropertiesList = new List(); @@ -607,6 +623,11 @@ private IEnumerable WriteTableDeclaration(Class classe, Sql WriteComments(writerComment, classe, tableName, properties); } + if (writerResources is not null) + { + WriteResources(writerResources, classe); + } + writerCrebas.WriteLine(); if (isContainsInsertKey) diff --git a/TopModel.Generator.Sql/Procedural/ProceduralSqlConfig.cs b/TopModel.Generator.Sql/Procedural/ProceduralSqlConfig.cs index ca4803d6..a4d50754 100644 --- a/TopModel.Generator.Sql/Procedural/ProceduralSqlConfig.cs +++ b/TopModel.Generator.Sql/Procedural/ProceduralSqlConfig.cs @@ -32,6 +32,11 @@ public class ProceduralSqlConfig /// public string? CommentFile { get; set; } + /// + /// Retourne ou définit l'emplacement du fichier de création des commentaires (SQL). + /// + public string? ResourceFile { get; set; } + /// /// Retourne ou définit l'emplacement du script d'insertion des données des listes de référence (SQL). /// diff --git a/TopModel.Generator.Sql/Procedural/ProceduralSqlGenerator.cs b/TopModel.Generator.Sql/Procedural/ProceduralSqlGenerator.cs index c0e61fef..07d069eb 100644 --- a/TopModel.Generator.Sql/Procedural/ProceduralSqlGenerator.cs +++ b/TopModel.Generator.Sql/Procedural/ProceduralSqlGenerator.cs @@ -30,6 +30,7 @@ public ProceduralSqlGenerator(ILogger logger, Translatio Config.Procedural!.InitListFile!, Config.Procedural!.UniqueKeysFile!, Config.Procedural!.CommentFile!, + Config.Procedural!.ResourceFile!, }.Where(t => !string.IsNullOrEmpty(t)); protected override bool PersistentOnly => true; diff --git a/TopModel.Generator.Sql/sql.config.json b/TopModel.Generator.Sql/sql.config.json index 8599d060..f3f14459 100644 --- a/TopModel.Generator.Sql/sql.config.json +++ b/TopModel.Generator.Sql/sql.config.json @@ -94,6 +94,10 @@ "type": "string", "description": "Emplacement du fichier de création des commentaires." }, + "resourceFile": { + "type": "string", + "description": "Emplacement du fichier d'insertion des resources (libellés traduits)." + }, "initListFile": { "type": "string", "description": "Emplacement du script d'insertion des données des listes de référence." diff --git a/docs/generator/sql.md b/docs/generator/sql.md index bfa47d6f..d9c89c64 100644 --- a/docs/generator/sql.md +++ b/docs/generator/sql.md @@ -12,6 +12,7 @@ Le générateur SQL en mode `procedural` peut générer les fichiers suivants : - Un fichier d'insertion des valeurs pour toutes les classes persistées du modèle qui ont des `values`. - Un fichier d'insertion des commentaires pour toutes les classes persistées du modèle, ainsi que pour leurs colonnes (`postgresql` uniquement). - Un fichier de définition des types toutes les classes persistées du modèle, ainsi que pour leurs colonnes (`sqlserver` uniquement). +- Un fichier d'insertion des traductions dans la table définie par le paramètre `resourcesTableName`. ### SSDT @@ -39,6 +40,7 @@ _Remarque : A l'inverse de tous les autres générateurs, le générateur SQL es - `initListFile` : Nom du fichier d'insertion des listes de références. - `commentFile` : Nom du fichier d'insertion des commentaires. - `typeFile` : Nom du fichier de création des types. + - `resourceFile` : Nom du fichier d'insertion des traductions. - `ssdt` @@ -68,6 +70,10 @@ _Remarque : A l'inverse de tous les autres générateurs, le générateur SQL es Début de la séquence générée. +- `resourcesTableName` + + Nom de la table contenant les traductions + ### Exemple ```yaml @@ -82,6 +88,7 @@ sql: uniqueKeysFile: 03_unique_keys.sql initListFile: 04_references.sql commentFile: 05_comments.sql + resourceFile: 06_resources.sql identity: increment: 50 start: 1000 diff --git a/samples/generators/angular/topmodel.config.schema.json b/samples/generators/angular/topmodel.config.schema.json index 5417dc2c..b10708f5 100644 --- a/samples/generators/angular/topmodel.config.schema.json +++ b/samples/generators/angular/topmodel.config.schema.json @@ -853,6 +853,10 @@ "type": "string", "description": "Emplacement du fichier de création des commentaires." }, + "resourceFile": { + "type": "string", + "description": "Emplacement du fichier d'insertion des resources (libellés traduits)." + }, "initListFile": { "type": "string", "description": "Emplacement du script d'insertion des données des listes de référence." diff --git a/samples/generators/csharp/topmodel.config.schema.json b/samples/generators/csharp/topmodel.config.schema.json index 5417dc2c..b10708f5 100644 --- a/samples/generators/csharp/topmodel.config.schema.json +++ b/samples/generators/csharp/topmodel.config.schema.json @@ -853,6 +853,10 @@ "type": "string", "description": "Emplacement du fichier de création des commentaires." }, + "resourceFile": { + "type": "string", + "description": "Emplacement du fichier d'insertion des resources (libellés traduits)." + }, "initListFile": { "type": "string", "description": "Emplacement du script d'insertion des données des listes de référence." diff --git a/samples/generators/database/topmodel.config.schema.json b/samples/generators/database/topmodel.config.schema.json index 5417dc2c..b10708f5 100644 --- a/samples/generators/database/topmodel.config.schema.json +++ b/samples/generators/database/topmodel.config.schema.json @@ -853,6 +853,10 @@ "type": "string", "description": "Emplacement du fichier de création des commentaires." }, + "resourceFile": { + "type": "string", + "description": "Emplacement du fichier d'insertion des resources (libellés traduits)." + }, "initListFile": { "type": "string", "description": "Emplacement du script d'insertion des données des listes de référence." diff --git a/samples/generators/focus/topmodel.config.schema.json b/samples/generators/focus/topmodel.config.schema.json index 5417dc2c..b10708f5 100644 --- a/samples/generators/focus/topmodel.config.schema.json +++ b/samples/generators/focus/topmodel.config.schema.json @@ -853,6 +853,10 @@ "type": "string", "description": "Emplacement du fichier de création des commentaires." }, + "resourceFile": { + "type": "string", + "description": "Emplacement du fichier d'insertion des resources (libellés traduits)." + }, "initListFile": { "type": "string", "description": "Emplacement du script d'insertion des données des listes de référence." diff --git a/samples/generators/jpa/topmodel.config.schema.json b/samples/generators/jpa/topmodel.config.schema.json index 5417dc2c..b10708f5 100644 --- a/samples/generators/jpa/topmodel.config.schema.json +++ b/samples/generators/jpa/topmodel.config.schema.json @@ -853,6 +853,10 @@ "type": "string", "description": "Emplacement du fichier de création des commentaires." }, + "resourceFile": { + "type": "string", + "description": "Emplacement du fichier d'insertion des resources (libellés traduits)." + }, "initListFile": { "type": "string", "description": "Emplacement du script d'insertion des données des listes de référence." diff --git a/samples/generators/open-api/topmodel.config.schema.json b/samples/generators/open-api/topmodel.config.schema.json index 5417dc2c..b10708f5 100644 --- a/samples/generators/open-api/topmodel.config.schema.json +++ b/samples/generators/open-api/topmodel.config.schema.json @@ -853,6 +853,10 @@ "type": "string", "description": "Emplacement du fichier de création des commentaires." }, + "resourceFile": { + "type": "string", + "description": "Emplacement du fichier d'insertion des resources (libellés traduits)." + }, "initListFile": { "type": "string", "description": "Emplacement du script d'insertion des données des listes de référence." diff --git a/samples/generators/pg/src/01_tables.sql b/samples/generators/pg/src/01_tables.sql index 646387ad..db0c3c2d 100644 --- a/samples/generators/pg/src/01_tables.sql +++ b/samples/generators/pg/src/01_tables.sql @@ -81,3 +81,19 @@ create table UTILISATEUR ( constraint PK_UTILISATEUR primary key (UTI_ID) ); +/** + * Création de ta table TRANSLATION contenant les traductions + **/ +create table TRANSLATION ( + RESOURCE_KEY varchar(255), + LOCALE varchar(10), + LABEL varchar(255), + constraint PK_KEY_LOCALE primary key (RESOURCE_KEY, LOCALE) +) +/** + * Création de l'index pour TRANSLATION (RESOURCE_KEY, LOCALE) + **/ +create index IDX_TRANSLATION_RESOURCE_KEY_LOCALE on TRANSLATION ( + RESOURCE_KEY, LOCALE ASC +); + diff --git a/samples/generators/pg/src/02_fk_indexes.sql b/samples/generators/pg/src/02_fk_indexes.sql index 37d6c5e1..865ee801 100644 --- a/samples/generators/pg/src/02_fk_indexes.sql +++ b/samples/generators/pg/src/02_fk_indexes.sql @@ -77,3 +77,45 @@ alter table UTILISATEUR add constraint FK_UTILISATEUR_TUT_CODE foreign key (TUT_CODE) references TYPE_UTILISATEUR (TUT_CODE); +/** + * Création de l'index de clef étrangère pour DROIT.DRO_LIBELLE + **/ +create index IDX_DRO_DRO_LIBELLE_FK on DROIT ( + DRO_LIBELLE ASC +); + +/** + * Génération de la contrainte de clef étrangère pour DROIT.DRO_LIBELLE + **/ +alter table DROIT + add constraint FK_DROIT_DRO_LIBELLE foreign key (DRO_LIBELLE) + references TRANSLATION (RESOURCE_KEY); + +/** + * Création de l'index de clef étrangère pour TYPE_DROIT.TDR_LIBELLE + **/ +create index IDX_TDR_TDR_LIBELLE_FK on TYPE_DROIT ( + TDR_LIBELLE ASC +); + +/** + * Génération de la contrainte de clef étrangère pour TYPE_DROIT.TDR_LIBELLE + **/ +alter table TYPE_DROIT + add constraint FK_TYPE_DROIT_TDR_LIBELLE foreign key (TDR_LIBELLE) + references TRANSLATION (RESOURCE_KEY); + +/** + * Création de l'index de clef étrangère pour TYPE_UTILISATEUR.TUT_LIBELLE + **/ +create index IDX_TUT_TUT_LIBELLE_FK on TYPE_UTILISATEUR ( + TUT_LIBELLE ASC +); + +/** + * Génération de la contrainte de clef étrangère pour TYPE_UTILISATEUR.TUT_LIBELLE + **/ +alter table TYPE_UTILISATEUR + add constraint FK_TYPE_UTILISATEUR_TUT_LIBELLE foreign key (TUT_LIBELLE) + references TRANSLATION (RESOURCE_KEY); + diff --git a/samples/generators/pg/src/06_resources.sql b/samples/generators/pg/src/06_resources.sql new file mode 100644 index 00000000..2fe0fe67 --- /dev/null +++ b/samples/generators/pg/src/06_resources.sql @@ -0,0 +1,25 @@ +---- +---- ATTENTION CE FICHIER EST GENERE AUTOMATIQUEMENT ! +---- + +-- =========================================================================================== +-- Application Name : pg +-- Script Name : 06_resources.sql +-- Description : Script de création des resources (libellés traduits). +-- =========================================================================================== + +/** Initialisation des traductions des valeurs de la table DROIT **/ +INSERT INTO TRANSLATION(RESOURCE_KEY, LOCALE, LABEL) VALUES('securite.profil.droit.values.Create', null, "'Création'); +INSERT INTO TRANSLATION(RESOURCE_KEY, LOCALE, LABEL) VALUES('securite.profil.droit.values.Read', null, "'Lecture'); +INSERT INTO TRANSLATION(RESOURCE_KEY, LOCALE, LABEL) VALUES('securite.profil.droit.values.Update', null, "'Mise à jour'); +INSERT INTO TRANSLATION(RESOURCE_KEY, LOCALE, LABEL) VALUES('securite.profil.droit.values.Delete', null, "'Suppression'); + +/** Initialisation des traductions des valeurs de la table TYPE_DROIT **/ +INSERT INTO TRANSLATION(RESOURCE_KEY, LOCALE, LABEL) VALUES('securite.profil.typeDroit.values.Read', null, "'Lecture'); +INSERT INTO TRANSLATION(RESOURCE_KEY, LOCALE, LABEL) VALUES('securite.profil.typeDroit.values.Write', null, "'Ecriture'); +INSERT INTO TRANSLATION(RESOURCE_KEY, LOCALE, LABEL) VALUES('securite.profil.typeDroit.values.Admin', null, "'Administration'); + +/** Initialisation des traductions des valeurs de la table TYPE_UTILISATEUR **/ +INSERT INTO TRANSLATION(RESOURCE_KEY, LOCALE, LABEL) VALUES('securite.utilisateur.typeUtilisateur.values.Admin', null, "'Administrateur'); +INSERT INTO TRANSLATION(RESOURCE_KEY, LOCALE, LABEL) VALUES('securite.utilisateur.typeUtilisateur.values.Gestionnaire', null, "'Gestionnaire'); +INSERT INTO TRANSLATION(RESOURCE_KEY, LOCALE, LABEL) VALUES('securite.utilisateur.typeUtilisateur.values.Client', null, "'Client'); diff --git a/samples/generators/pg/topmodel.config b/samples/generators/pg/topmodel.config index a5f1b379..1e4a3755 100644 --- a/samples/generators/pg/topmodel.config +++ b/samples/generators/pg/topmodel.config @@ -17,7 +17,9 @@ sql: uniqueKeysFile: 03_unique_keys.sql initListFile: 04_references.sql commentFile: 05_comments.sql + resourceFile: 06_resources.sql identity: increment: 50 start: 1000 mode: sequence + resourcesTableName: TRANSLATION \ No newline at end of file diff --git a/samples/generators/pg/topmodel.config.schema.json b/samples/generators/pg/topmodel.config.schema.json index 5417dc2c..b10708f5 100644 --- a/samples/generators/pg/topmodel.config.schema.json +++ b/samples/generators/pg/topmodel.config.schema.json @@ -853,6 +853,10 @@ "type": "string", "description": "Emplacement du fichier de création des commentaires." }, + "resourceFile": { + "type": "string", + "description": "Emplacement du fichier d'insertion des resources (libellés traduits)." + }, "initListFile": { "type": "string", "description": "Emplacement du script d'insertion des données des listes de référence." diff --git a/samples/generators/php/topmodel.config.schema.json b/samples/generators/php/topmodel.config.schema.json index 88542617..043b83dc 100644 --- a/samples/generators/php/topmodel.config.schema.json +++ b/samples/generators/php/topmodel.config.schema.json @@ -853,6 +853,10 @@ "type": "string", "description": "Emplacement du fichier de création des commentaires." }, + "resourceFile": { + "type": "string", + "description": "Emplacement du fichier d'insertion des resources (libellés traduits)." + }, "initListFile": { "type": "string", "description": "Emplacement du script d'insertion des données des listes de référence." diff --git a/samples/generators/ssdt/topmodel.config.schema.json b/samples/generators/ssdt/topmodel.config.schema.json index 5417dc2c..b10708f5 100644 --- a/samples/generators/ssdt/topmodel.config.schema.json +++ b/samples/generators/ssdt/topmodel.config.schema.json @@ -853,6 +853,10 @@ "type": "string", "description": "Emplacement du fichier de création des commentaires." }, + "resourceFile": { + "type": "string", + "description": "Emplacement du fichier d'insertion des resources (libellés traduits)." + }, "initListFile": { "type": "string", "description": "Emplacement du script d'insertion des données des listes de référence." diff --git a/samples/generators/translation/topmodel.config.schema.json b/samples/generators/translation/topmodel.config.schema.json index 5417dc2c..b10708f5 100644 --- a/samples/generators/translation/topmodel.config.schema.json +++ b/samples/generators/translation/topmodel.config.schema.json @@ -853,6 +853,10 @@ "type": "string", "description": "Emplacement du fichier de création des commentaires." }, + "resourceFile": { + "type": "string", + "description": "Emplacement du fichier d'insertion des resources (libellés traduits)." + }, "initListFile": { "type": "string", "description": "Emplacement du script d'insertion des données des listes de référence." diff --git a/samples/model/pg.topmodel.lock b/samples/model/pg.topmodel.lock index c1cb635f..f09d7ece 100644 --- a/samples/model/pg.topmodel.lock +++ b/samples/model/pg.topmodel.lock @@ -9,3 +9,4 @@ generatedFiles: - ../generators/pg/src/03_unique_keys.sql - ../generators/pg/src/04_references.sql - ../generators/pg/src/05_comments.sql + - ../generators/pg/src/06_resources.sql