From 641a60fc5de8728d979e6cb92c3d973d56372f5d Mon Sep 17 00:00:00 2001 From: Damien Date: Mon, 2 Sep 2024 19:57:21 +0200 Subject: [PATCH] =?UTF-8?q?Initialisation=20chargement=20modules=20de=20g?= =?UTF-8?q?=C3=A9n=C3=A9rateurs=20depuis=20nuget?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TopModel.Core/ModelStore.cs | 2 +- TopModel.Generator/ModgenDependency.cs | 8 + TopModel.Generator/Program.cs | 166 +++- TopModel.Generator/TopModel.Generator.csproj | 8 +- TopModel.ModelGenerator/Program.cs | 2 +- TopModel.Utils/TopModelLock.cs | 39 +- TopModel.Utils/TopModelLockFile.cs | 2 + samples/generators/angular/topmodel.config | 4 +- .../angular/topmodel.config.schema.json | 763 --------------- samples/generators/csharp/topmodel.config | 2 + .../csharp/topmodel.config.schema.json | 663 ------------- .../database/topmodel.config.schema.json | 924 ------------------ samples/generators/focus/topmodel.config | 2 + .../focus/topmodel.config.schema.json | 763 --------------- samples/generators/jpa/topmodel.config | 2 + .../jpa/topmodel.config.schema.json | 658 ------------- .../open-api/topmodel.config.schema.json | 924 ------------------ samples/generators/pg/topmodel.config | 2 + .../generators/pg/topmodel.config.schema.json | 762 --------------- .../php/topmodel.config.schema.json | 924 ------------------ samples/generators/ssdt/topmodel.config | 4 +- .../ssdt/topmodel.config.schema.json | 762 --------------- .../generators/translation/topmodel.config | 4 +- .../translation/topmodel.config.schema.json | 850 ---------------- 24 files changed, 205 insertions(+), 8035 deletions(-) create mode 100644 TopModel.Generator/ModgenDependency.cs diff --git a/TopModel.Core/ModelStore.cs b/TopModel.Core/ModelStore.cs index 7a4800b2..af637e9e 100644 --- a/TopModel.Core/ModelStore.cs +++ b/TopModel.Core/ModelStore.cs @@ -212,7 +212,7 @@ public void TryApplyUpdates() var generatedFiles = _modelWatchers.Where(m => m.GeneratedFiles != null).SelectMany(m => m.GeneratedFiles!); if (generatedFiles.Any() && !DisableLockfile && _topModelLock != null) { - _topModelLock.Update(generatedFiles); + _topModelLock.UpdateFiles(generatedFiles); } _logger.LogInformation($"Mise à jour terminée avec succès."); diff --git a/TopModel.Generator/ModgenDependency.cs b/TopModel.Generator/ModgenDependency.cs new file mode 100644 index 00000000..068f5949 --- /dev/null +++ b/TopModel.Generator/ModgenDependency.cs @@ -0,0 +1,8 @@ +using TopModel.Utils; + +namespace TopModel.Generator; + +public record ModgenDependency(string ConfigKey, string Version) +{ + public string FullName => $"TopModel.Generator.{ConfigKey.ToFirstUpper()}"; +} diff --git a/TopModel.Generator/Program.cs b/TopModel.Generator/Program.cs index bc1b72f2..306e2a95 100644 --- a/TopModel.Generator/Program.cs +++ b/TopModel.Generator/Program.cs @@ -2,10 +2,17 @@ using System.Reflection; using System.Text.Encodings.Web; using System.Text.Json.Nodes; +using System.Xml; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; +using NuGet.Common; +using NuGet.Packaging; +using NuGet.Protocol; +using NuGet.Protocol.Core.Types; +using NuGet.Versioning; using TopModel.Core; using TopModel.Core.Loaders; +using TopModel.Generator; using TopModel.Generator.Core; using TopModel.Utils; @@ -21,11 +28,11 @@ var command = new RootCommand("Lance le générateur topmodel.") { Name = "modgen" }; -var fileOption = new Option>(new[] { "-f", "--file" }, "Chemin vers un fichier de config."); -var excludeOption = new Option>(new[] { "-e", "--exclude" }, "Tag à ignorer lors de la génération."); -var watchOption = new Option(new[] { "-w", "--watch" }, "Lance le générateur en mode 'watch'"); -var checkOption = new Option(new[] { "-c", "--check" }, "Vérifie que le code généré est conforme au modèle."); -var schemaOption = new Option(new[] { "-s", "--schema" }, "Génère le fichier de schéma JSON du fichier de config."); +var fileOption = new Option>(["-f", "--file"], "Chemin vers un fichier de config."); +var excludeOption = new Option>(["-e", "--exclude"], "Tag à ignorer lors de la génération."); +var watchOption = new Option(["-w", "--watch"], "Lance le générateur en mode 'watch'"); +var checkOption = new Option(["-c", "--check"], "Vérifie que le code généré est conforme au modèle."); +var schemaOption = new Option(["-s", "--schema"], "Génère le fichier de schéma JSON du fichier de config."); command.AddOption(fileOption); command.AddOption(excludeOption); command.AddOption(watchOption); @@ -179,7 +186,7 @@ void HandleFile(FileInfo file) return (configType, configName); } -var baseGenerators = new FileInfo(Assembly.GetEntryAssembly()!.Location).Directory!.GetFiles("TopModel.Generator.*.dll"); +var framework = $"net{Environment.Version.Major}.{Environment.Version.Minor}"; var disposables = new List(); var loggerProvider = new LoggerProvider(); var hasErrors = Enumerable.Range(0, configs.Count).Select(_ => false).ToArray(); @@ -197,28 +204,143 @@ void HandleFile(FileInfo file) Console.WriteLine(); - var generators = baseGenerators - .Concat(config.CustomGenerators.SelectMany(cg => new DirectoryInfo(Path.Combine(Path.GetFullPath(cg, new FileInfo(fullName).DirectoryName!), "bin")).GetFiles("TopModel.Generator.*.dll", SearchOption.AllDirectories))) - .Where(a => a.FullName.Contains($"net{Environment.Version.Major}.{Environment.Version.Minor}")) - .DistinctBy(a => a.Name) - .Select(f => Assembly.LoadFrom(f.FullName)) - .SelectMany(a => a.GetExportedTypes()) - .Where(t => GetIGenRegInterface(t) != null) - .ToList(); + var generators = new List(); + var deps = new List(); - var undefinedConfigs = config.Generators.Keys.Except(generators.Select(g => GetIGenRegInterfaceAndName(g).Name))!; + foreach (var cg in config.CustomGenerators) + { + var csproj = Directory.GetFiles(Path.GetFullPath(cg, new FileInfo(fullName).DirectoryName!), "*.csproj").FirstOrDefault(); + if (csproj == null) + { + logger.LogError($"Aucun fichier csproj trouvé pour le module de générateurs '{cg}'."); + returnCode = 1; + continue; + } + + var csprojXml = new XmlDocument(); + csprojXml.LoadXml(File.ReadAllText(csproj)); + + foreach (var dep in csprojXml.GetElementsByTagName("PackageReference").Cast() + .Where(n => n.ChildNodes.Count == 0) + .ToDictionary(n => n.Attributes!["Include"]!.Value, n => n.Attributes!["Version"]!.Value) + .Where(n => n.Key.StartsWith("TopModel.Generator"))) + { + if (dep.Key == "TopModel.Generator.Core") + { + // TODO : Gérer version min. + } + else + { + var configKey = dep.Key.Split('.').Last().ToLower(); + if (!topModelLock.Modules.TryGetValue(configKey, out var ev)) + { + topModelLock.Modules.Add(configKey, dep.Value); + } + else if (ev != dep.Value) + { + logger.LogError($"Le module personalisé '{cg}' référence le module '{configKey}' en version '{dep.Value}', ce qui n'est pas la version du lockfile ('{ev}')."); + returnCode = 1; + continue; + } + } + } - if (undefinedConfigs.Any()) + if (returnCode == 0) + { + generators.AddRange(new DirectoryInfo(Path.Combine(Path.GetFullPath(cg, new FileInfo(fullName).DirectoryName!), "bin")) + .GetFiles("TopModel.Generator.*.dll", SearchOption.AllDirectories) + .Where(a => a.FullName.Contains(framework)) + .Select(f => Assembly.LoadFrom(f.FullName)) + .SelectMany(a => a.GetExportedTypes()) + .Where(t => GetIGenRegInterface(t) != null)); + } + } + + if (returnCode != 0) { - returnCode = 1; - Console.ForegroundColor = colors[i % colors.Length]; - Console.Write($"#{i + 1}"); - Console.ForegroundColor = ConsoleColor.Red; - Console.WriteLine($" Aucune configuration de générateur n'a été trouvée pour : {string.Join(", ", undefinedConfigs)}."); - Console.ForegroundColor = ConsoleColor.Gray; continue; } + var ct = CancellationToken.None; + + var nugetCache = new SourceCacheContext(); + var nugetRepository = Repository.Factory.GetCoreV3("https://api.nuget.org/v3/index.json"); + var nugetResource = await nugetRepository.GetResourceAsync(); + + foreach (var configKey in config.Generators.Keys) + { + if (generators.Any(g => GetIGenRegInterfaceAndName(g).Name == configKey)) + { + continue; + } + + var fullModuleName = $"TopModel.Generator.{configKey.ToFirstUpper()}"; + + if (!topModelLock.Modules.TryGetValue(configKey, out var moduleVersion)) + { + var moduleVersions = await nugetResource.GetAllVersionsAsync(fullModuleName, nugetCache, NullLogger.Instance, ct); + + if (!moduleVersions.Any()) + { + logger.LogError($"Aucun module de générateurs trouvé pour '{configKey}'."); + returnCode = 1; + continue; + } + + var nugetVersion = moduleVersions.Last().Version; + moduleVersion = $"{nugetVersion.Major}.{nugetVersion.Minor}.{nugetVersion.Build}"; + topModelLock.Modules.Add(configKey, moduleVersion); + + var topmodelDep = (await nugetResource.GetDependencyInfoAsync(fullModuleName, new NuGetVersion(moduleVersion), nugetCache, NullLogger.Instance, ct)) + .DependencyGroups + .Single(dg => dg.TargetFramework.ToString() == framework) + .Packages + .Single(d => d.Id == "TopModel.Generator.Core"); + + // TODO : Gérer version min. + } + + deps.Add(new(configKey, moduleVersion)); + } + + var modgenRoot = Path.GetFullPath(".modgen", config.ModelRoot); + Directory.CreateDirectory(modgenRoot); + + foreach (var dep in deps) + { + var moduleFolder = Path.Combine(modgenRoot, $"{dep.ConfigKey}.{dep.Version}"); + if (!Directory.Exists(moduleFolder)) + { + if (!await nugetResource.DoesPackageExistAsync(dep.FullName, new NuGetVersion(dep.Version), nugetCache, NullLogger.Instance, ct)) + { + logger.LogError($"Le package '{dep.FullName}' en version {dep.Version} est introuvable."); + returnCode = 1; + continue; + } + + Directory.CreateDirectory(moduleFolder); + + using var packageStream = new MemoryStream(); + await nugetResource.CopyNupkgToStreamAsync(dep.FullName, new NuGetVersion(dep.Version), packageStream, nugetCache, NullLogger.Instance, ct); + using var packageReader = new PackageArchiveReader(packageStream); + var nuspecReader = await packageReader.GetNuspecReaderAsync(ct); + + foreach (var file in packageReader.GetFiles().Where(f => f == $"lib/{framework}/{dep.FullName}.dll" || f.EndsWith("config.json"))) + { + packageReader.ExtractFile(file, Path.Combine(moduleFolder, file.Split('/').Last()), NullLogger.Instance); + } + } + + generators.AddRange(Assembly.LoadFrom(Path.Combine(moduleFolder, $"{dep.FullName}.dll")).GetExportedTypes().Where(t => GetIGenRegInterface(t) != null)); + } + + if (returnCode != 0) + { + continue; + } + + topModelLock.Write(); + if (schemaMode) { Console.ForegroundColor = colors[i % colors.Length]; diff --git a/TopModel.Generator/TopModel.Generator.csproj b/TopModel.Generator/TopModel.Generator.csproj index 6d518b2a..a995fc1c 100644 --- a/TopModel.Generator/TopModel.Generator.csproj +++ b/TopModel.Generator/TopModel.Generator.csproj @@ -41,6 +41,8 @@ + + @@ -49,11 +51,7 @@ - - - - - + diff --git a/TopModel.ModelGenerator/Program.cs b/TopModel.ModelGenerator/Program.cs index 9aae25c7..bdee8978 100644 --- a/TopModel.ModelGenerator/Program.cs +++ b/TopModel.ModelGenerator/Program.cs @@ -218,7 +218,7 @@ async Task StartGeneration(string filePath, string directoryName, int i) generatedFiles.AddRange(await generator.Generate(loggingScope)); } - tmdLock.Update(generatedFiles); + tmdLock.UpdateFiles(generatedFiles); mainLogger.LogInformation("Mise à jour terminée avec succès."); } diff --git a/TopModel.Utils/TopModelLock.cs b/TopModel.Utils/TopModelLock.cs index a7ba40b0..95c95b34 100644 --- a/TopModel.Utils/TopModelLock.cs +++ b/TopModel.Utils/TopModelLock.cs @@ -34,6 +34,7 @@ public TopModelLock(ILogger logger, string modelRoot, string lockFileName) var lf = _deserializer.Deserialize(file); Version = lf.Version; GeneratedFiles = lf.GeneratedFiles; + Modules = lf.Modules; } catch { @@ -53,7 +54,7 @@ public TopModelLock(ILogger logger, string modelRoot, string lockFileName) Version = version; } - public void Update(IEnumerable generatedFiles) + public void UpdateFiles(IEnumerable generatedFiles) { GeneratedFiles ??= []; @@ -77,18 +78,36 @@ public void Update(IEnumerable generatedFiles) GeneratedFiles = generatedFilesList; - using var fw = new FileWriter(Path.Combine(_modelRoot, _lockFileName), _logger) - { - StartCommentToken = "#" - }; + Write(); + } - fw.WriteLine($"version: {Version}"); - if (GeneratedFiles.Count > 0) + public void Write() + { + if (Modules.Count > 0 || GeneratedFiles.Count > 0) { - fw.WriteLine("generatedFiles:"); - foreach (var genFile in GeneratedFiles) + using var fw = new FileWriter(Path.Combine(_modelRoot, _lockFileName), _logger) + { + StartCommentToken = "#" + }; + + fw.WriteLine($"version: {Version}"); + + if (Modules.Count > 0) + { + fw.WriteLine("modules:"); + foreach (var module in Modules) + { + fw.WriteLine($" {module.Key}: {module.Value}"); + } + } + + if (GeneratedFiles.Count > 0) { - fw.WriteLine($" - {genFile}"); + fw.WriteLine("generatedFiles:"); + foreach (var genFile in GeneratedFiles) + { + fw.WriteLine($" - {genFile}"); + } } } } diff --git a/TopModel.Utils/TopModelLockFile.cs b/TopModel.Utils/TopModelLockFile.cs index b2179c79..6ce34723 100644 --- a/TopModel.Utils/TopModelLockFile.cs +++ b/TopModel.Utils/TopModelLockFile.cs @@ -4,5 +4,7 @@ public class TopModelLockFile { public required string Version { get; set; } + public Dictionary Modules { get; set; } = []; + public List GeneratedFiles { get; set; } = []; } diff --git a/samples/generators/angular/topmodel.config b/samples/generators/angular/topmodel.config index 4ad15ba9..4abbf25c 100644 --- a/samples/generators/angular/topmodel.config +++ b/samples/generators/angular/topmodel.config @@ -1,8 +1,10 @@ -# yaml-language-server: $schema=./topmodel.config.schema.json +# yaml-language-server: $schema=./topmodel.config.schema.json --- app: Angular modelRoot: ../../model lockFileName: angular.topmodel.lock +generators: + - ../../../TopModel.Generator.Javascript javascript: - tags: - front diff --git a/samples/generators/angular/topmodel.config.schema.json b/samples/generators/angular/topmodel.config.schema.json index 7dcf64b3..8dc06ad7 100644 --- a/samples/generators/angular/topmodel.config.schema.json +++ b/samples/generators/angular/topmodel.config.schema.json @@ -89,267 +89,6 @@ "type": "string" } }, - "csharp": { - "type": "array", - "items": { - "type": "object", - "description": "Config pour la génération de C#.", - "additionalProperties": false, - "required": [ - "outputDirectory", - "tags" - ], - "properties": { - "language": { - "type": "string", - "description": "Langage du générateur, utilisé pour choisir l'implémentation correspondante des domaines, décorateurs et convertisseurs. Par défaut : 'csharp'." - }, - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "boolean" - } - ] - } - } - }, - "tagVariables": { - "type": "object", - "description": "Définitions de variables par tag à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".*": { - "type": "object", - "patternProperties": { - ".*": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "boolean" - } - ] - } - } - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "CSharpClassGen", - "CSharpMapperGen", - "CSharpDbContextGen", - "CSharpRefAccessGen", - "CSharpApiServerGen", - "CSharpApiClientGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "translateReferences": { - "type": "boolean", - "description": "Si les libellés des listes de références doivent être traduits.", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits.", - "default": "true" - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "persistentModelPath": { - "type": "string", - "description": "Localisation du modèle persisté, relative au répertoire de génération. Par défaut : {app}.{module}.Models." - }, - "referencesModelPath": { - "type": "string", - "description": "Localisation des classes de références, relative au répertoire de génération. Si non renseigné, ces classes seront générées comme les autres (selon si elles sont persistantes ou non)." - }, - "nonPersistentModelPath": { - "type": "string", - "description": "Localisation du modèle non persisté, relative au répertoire de génération. Par défaut : {app}.{module}.Models/Dto." - }, - "apiRootPath": { - "type": "string", - "description": "Localisation du l'API générée (client ou serveur), relative au répertoire de génération. Par défaut : {app}.Web." - }, - "apiFilePath": { - "type": "string", - "description": "Chemin vers lequel sont créés les fichiers d'endpoints générés, relative à la racine de l'API. Par défaut : {module}." - }, - "apiGeneration": { - "oneOf": [ - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "enum": [ - "Client", - "Server" - ] - }, - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "dataFlowsPath": { - "type": "string", - "description": "Localisation des flux de données générés." - }, - "useEFMigrations": { - "type": "boolean", - "description": "Utilise les migrations EF pour créer/mettre à jour la base de données. Par défaut : 'true'." - }, - "dbContextPath": { - "type": "string", - "description": "Localisation du DbContext, relative au répertoire de génération." - }, - "dbContextName": { - "type": "string", - "description": "Nom du DbContext. Par défaut : {app}DbContext." - }, - "referenceAccessorsInterfacePath": { - "type": "string", - "description": "Chemin vers lequel générer les interfaces d'accesseurs de référence. Par défaut : {DbContextPath}/Reference." - }, - "referenceAccessorsImplementationPath": { - "type": "string", - "description": "Chemin vers lequel générer les implémentation d'accesseurs de référence. Par défaut : {DbContextPath}/Reference." - }, - "referenceAccessorsName": { - "type": "string", - "description": "Nom des accesseurs de référence (préfixé par 'I' pour l'interface). Par défaut : {module}ReferenceAccessors." - }, - "noAsyncControllers": { - "type": "boolean", - "description": "Génère des contrôleurs d'API synchrones." - }, - "useLowerCaseSqlNames": { - "type": "boolean", - "description": "Utilise des noms de tables et de colonnes en lowercase. Par défaut : 'true'." - }, - "dbSchema": { - "type": "string", - "description": "Le nom du schéma de base de données à cibler (si non renseigné, EF utilise 'dbo')." - }, - "kinetix": { - "type": "boolean", - "description": "Si on génère avec Kinetix." - }, - "domainNamespace": { - "type": "string", - "description": "Namespace de l'enum de domaine pour Kinetix. Par défaut : '{app}.Common'." - }, - "valueTypes": { - "type": "array", - "description": "Types C# que le générateur doit considérer comme étant types valeurs (en plus des plus standard comme 'int', 'bool' ou 'DateTime'), qu'il faudra wrapper dans un `Nullable` (avec un `?`) pour les rendre nullables.", - "items": { - "type": "string" - } - }, - "nullableEnable": { - "type": "boolean", - "description": "Prend en compte l'activation du paramètre `nullable: enable` dans le code généré (pour ajouter des `?` derrière les types références nullables)." - }, - "requiredNonNullable": { - "oneOf": [ - { - "type": "boolean", - "description": "Génère des types non-nullables pour les propriétés obligatoires." - }, - { - "type": "string", - "description": "Génère des types non-nullables pour les propriétés obligatoires.", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "noColumnOnAlias": { - "type": "boolean", - "description": "Ne génère pas les attributs de colonnes sur les alias dans les classes non persistées. Par défaut : 'true'." - }, - "noPersistence": { - "oneOf": [ - { - "type": "boolean", - "description": "Considère tous les classes comme étant non-persistantes (= pas d'attribut SQL)." - }, - { - "type": "string", - "description": "Considère tous les classes comme étant non-persistantes (= pas d'attribut SQL).", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "mapperTagsOverrides": { - "type": "array", - "description": "Si un mapper contient au moins une classe de ces tags, alors il sera généré avec les tags de cette classe (au lieu du comportement par défaut qui priorise les tags de la classe persistée puis de celle qui définit le mapper).", - "items": { - "type": "string" - } - }, - "mapperLocationPriority": { - "type": "string", - "description": "Détermine le type de classe prioritaire pour déterminer la localisation des mappers générés (`persistent` ou `non-persistent`). Par défaut : 'persistent'", - "enum": [ - "persistent", - "non-persistent" - ] - }, - "enumsForStaticReferences": { - "type": "boolean", - "description": "Utilise des enums au lieu de strings pour les PKs de listes de référence statiques." - }, - "useEFComments": { - "type": "boolean", - "description": "Annote les tables et les colonnes générées par EF avec les commentaires du modèle (nécessite `UseEFMigrations`)." - }, - "useRecords": { - "type": [ - "string", - "boolean" - ], - "description": "Utilise des records (mutables) au lieu de classes pour la génération de classes.", - "enum": [ - true, - false, - "dtos-only" - ] - }, - "usePrimaryConstructors": { - "type": "boolean", - "description": "Utilise les constructeurs principaux pour la génération des classes avec dépendances (clients d'API, accesseurs de références)." - } - } - } - }, "javascript": { "type": "array", "items": { @@ -510,508 +249,6 @@ } } } - }, - "jpa": { - "type": "array", - "items": { - "type": "object", - "description": "Config pour la génération de Jpa.", - "additionalProperties": false, - "required": [ - "tags", - "outputDirectory" - ], - "properties": { - "language": { - "type": "string", - "description": "Langage du générateur, utilisé pour choisir l'implémentation correspondante des domaines, décorateurs et convertisseurs. Par défaut : 'java'." - }, - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "type": "string" - } - } - }, - "tagVariables": { - "type": "object", - "description": "Définitions de variables par tag à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".*": { - "type": "object", - "patternProperties": { - ".*": { - "type": "string" - } - } - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "JpaModelGen", - "JpaInterfaceGen", - "JpaMapperGenerator", - "JpaDaoGen", - "JpaEnumGenerator", - "JpaResourceGen", - "SpringApiServerGen", - "SpringApiClientGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "translateReferences": { - "type": "boolean", - "description": "Si les libellés des listes de références doivent être traduits.", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits.", - "default": "true" - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "entitiesPath": { - "type": "string", - "description": "Localisation des classes persistées du modèle, relative au répertoire de génération. Par défaut, 'javagen:{app}/entities/{module}'." - }, - "daosPath": { - "type": "string", - "description": "Localisation des DAOs, relative au répertoire de génération." - }, - "dtosPath": { - "type": "string", - "description": "Localisation des classes non persistées du modèle, relative au répertoire de génération. Par défaut, 'javagen:{app}/dtos/{module}'." - }, - "enumsPath": { - "type": "string", - "description": "Localisation des enums du modèle, relative au répertoire de génération.", - "default": "javagen:{app}/enums/{module}" - }, - "apiPath": { - "type": "string", - "description": "Localisation du l'API générée (client ou serveur), relative au répertoire de génération. Par défaut, 'javagen:{app}/api/{module}'.", - "default": "javagen:{app}/api/{module}" - }, - "compositionConverterCanonicalName": { - "type": "string", - "description": "Nom complet de la classe permettant de convertir les compositions stockées en json dans la bdd. Supporte le template {package} et {class}", - "default": "{package}.{class}Converter" - }, - "apiGeneration": { - "oneOf": [ - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "enum": [ - "Client", - "Server" - ] - }, - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "clientApiGeneration": { - "oneOf": [ - { - "type": "string", - "description": "Mode de génération de l'API Client ('Client' ou 'Server')", - "default": "RestClient", - "enum": [ - "RestTemplate", - "RestClient" - ] - }, - { - "type": "string", - "description": "Mode de génération de l'API ('RestTemplate' ou 'RestClient')", - "default": "RestClient", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "resourcesPath": { - "type": "string", - "description": "Localisation des ressources, relative au répertoire de génération." - }, - "resourcesEncoding": { - "type": "string", - "description": "Encodage des fichiers de resource.", - "default": "Latin1", - "enum": [ - "Latin1", - "UTF8" - ] - }, - "useJdbc": { - "type": "boolean", - "description": "Générer les entités en mode JDBC", - "default": "false" - }, - "daosAbstract": { - "type": "boolean", - "description": " Génération d'interface Abstract avec @NoRepositoryBean permettant de mettre à jour le code généré", - "default": "false" - }, - "daosInterface": { - "type": "string", - "description": "Précise l'interface des Daos générés.", - "default": "false" - }, - "mappersInClass": { - "type": "boolean", - "description": "Indique s'il faut ajouter les mappers en tant méthode ou constructeur dans les classes qui les déclarent" - }, - "dataFlowsPath": { - "type": "string", - "description": "Localisation des flux de données générés." - }, - "dataFlowsBulkSize": { - "type": "number", - "description": "Taille des chunks à extraire et insérer" - }, - "dataFlowsListeners": { - "type": "array", - "description": "Listeners à ajouter à tous les dataflows", - "items": { - "type": "string", - "description": "Listener à ajouter à tous les dataflows" - } - }, - "dbSchema": { - "type": "string", - "description": "Nom du schéma sur lequel les entités sont sauvegardées" - }, - "enumShortcutMode": { - "type": "boolean", - "description": "Option pour générer des getters et setters vers l'enum des références plutôt que sur la table", - "default": "false" - }, - "associationAdders": { - "type": "boolean", - "description": "Option pour générer des méthodes d'ajouts pour les associations oneToMany et manyToMany. Ces méthodes permettent de synchroniser les objets ajoutés", - "default": "false" - }, - "associationRemovers": { - "type": "boolean", - "description": "Option pour générer des méthodes de suppression pour les associations oneToMany et manyToMany. Ces méthodes permettent de synchroniser les objets supprimés", - "default": "false" - }, - "generatedHint": { - "type": "boolean", - "description": "Option pour générer l'annotation @Generated('TopModel : https://github.com/klee-contrib/topmodel')", - "default": "true" - }, - "fieldsEnum": { - "type": "string", - "description": "Option pour générer une enum des champs des classes persistées", - "default": "None", - "enum": [ - "None", - "Persisted", - "Dto", - "Persisted_Dto" - ] - }, - "fieldsEnumInterface": { - "type": "string", - "description": "Précise l'interface des fields enum générés." - }, - "persistenceMode": { - "type": "string", - "description": "Mode de génération de la persistence ('Javax' ou 'Jakarta')", - "enum": [ - "javax", - "jakarta" - ] - }, - "identity": { - "type": "object", - "description": "Options de génération de la séquence", - "properties": { - "mode": { - "type": "string", - "description": "Mode de génération des séquences.", - "enum": [ - "none", - "sequence", - "identity" - ], - "default": "identity" - }, - "increment": { - "type": "number", - "description": "Incrément de la séquence générée." - }, - "start": { - "type": "number", - "description": "Début de la séquence générée." - } - } - } - } - } - }, - "sql": { - "type": "array", - "items": { - "type": "object", - "description": "Config pour la génération de SQL.", - "additionalProperties": false, - "required": [ - "outputDirectory", - "tags" - ], - "properties": { - "language": { - "type": "string", - "description": "Langage du générateur, utilisé pour choisir l'implémentation correspondante des domaines, décorateurs et convertisseurs. Par défaut : 'sql'." - }, - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "type": "string" - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "SsdtGen", - "ProceduralSqlGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "translateReferences": { - "type": "boolean", - "description": "Si les libellés des listes de références doivent être traduits.", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits.", - "default": "true" - }, - "resourcesTableName": { - "type": "string", - "description": "Nom de la table dans laquelle doivent être insérées les traductions." - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "targetDBMS": { - "type": "string", - "description": "SGBD cible ('postgre' ou 'sqlserver').", - "enum": [ - "sqlserver", - "postgre" - ] - }, - "procedural": { - "type": "object", - "description": "Config pour la génération de SQL 'procédurale'.", - "additionalProperties": false, - "properties": { - "crebasFile": { - "type": "string", - "description": "Emplacement du fichier de création de base." - }, - "uniqueKeysFile": { - "type": "string", - "description": "Emplacement du fichier de création des index uniques." - }, - "indexFKFile": { - "type": "string", - "description": "Emplacement du fichier de création des clés étrangères." - }, - "typeFile": { - "type": "string", - "description": "Emplacement du fichier de création des types." - }, - "commentFile": { - "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." - }, - "identity": { - "type": "object", - "description": "Options de génération de la séquence", - "properties": { - "mode": { - "type": "string", - "description": "Mode de génération des séquences.", - "enum": [ - "none", - "sequence", - "identity" - ], - "default": "identity" - }, - "increment": { - "type": "number", - "description": "Incrément de la séquence générée." - }, - "start": { - "type": "number", - "description": "Début de la séquence générée." - } - } - } - } - }, - "ssdt": { - "type": "object", - "description": "Config pour la génération SSDT", - "additionalProperties": false, - "properties": { - "tableScriptFolder": { - "type": "string", - "description": "Dossier du projet pour les scripts de déclaration de table." - }, - "tableTypeScriptFolder": { - "type": "string", - "description": " Dossier du projet pour les scripts de déclaration de type table." - }, - "initListScriptFolder": { - "type": "string", - "description": "Dossier du projet pour les scripts d'initialisation des listes de références." - }, - "initListMainScriptName": { - "type": "string", - "description": "Fichier du projet référençant les scripts d'initialisation des listes de références." - }, - "disableIdentity": { - "type": "boolean", - "description": "Désactive les colonnes d'identité." - } - } - } - } - } - }, - "translation": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": false, - "required": [ - "outputDirectory", - "tags" - ], - "properties": { - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "type": "string" - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "JTranslationOutGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "translateReferences": { - "type": "boolean", - "description": "Si les libellés des listes de références doivent être traduits.", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits.", - "default": "true" - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "rootPath": { - "type": "string", - "description": "Template du chemin des dossiers de traductions sortants (manquants). Doit contenir le template {lang}", - "default": "{lang}" - }, - "defaultLang": { - "type": "string", - "description": "Langue par défaut (celle dans laquelle sont écris les labels dans les fichiers .tmd" - }, - "langs": { - "type": "array", - "items": { - "type": "string", - "description": "Code du angage" - } - } - } - } } }, "additionalProperties": false diff --git a/samples/generators/csharp/topmodel.config b/samples/generators/csharp/topmodel.config index d4bca6ad..dc9a736e 100644 --- a/samples/generators/csharp/topmodel.config +++ b/samples/generators/csharp/topmodel.config @@ -3,6 +3,8 @@ app: CSharp modelRoot: ../../model lockFileName: csharp.topmodel.lock +generators: + - ../../../TopModel.Generator.Csharp csharp: - tags: - back diff --git a/samples/generators/csharp/topmodel.config.schema.json b/samples/generators/csharp/topmodel.config.schema.json index 7dcf64b3..56a05a03 100644 --- a/samples/generators/csharp/topmodel.config.schema.json +++ b/samples/generators/csharp/topmodel.config.schema.json @@ -349,669 +349,6 @@ } } } - }, - "javascript": { - "type": "array", - "items": { - "type": "object", - "description": "Config pour la génération de Javascript.", - "additionalProperties": false, - "required": [ - "outputDirectory", - "tags" - ], - "properties": { - "language": { - "type": "string", - "description": "Langage du générateur, utilisé pour choisir l'implémentation correspondante des domaines, décorateurs et convertisseurs. Par défaut : 'ts'." - }, - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "type": "string" - } - } - }, - "tagVariables": { - "type": "object", - "description": "Définitions de variables par tag à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".*": { - "type": "object", - "patternProperties": { - ".*": { - "type": "string" - } - } - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "JSDefinitionGen", - "JSReferenceGen", - "JSNGApiClientGen", - "JSApiClientGen", - "JSResourceGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "modelRootPath": { - "type": "string", - "description": "Localisation du modèle, relative au répertoire de génération. Si non renseigné, aucun modèle ne sera généré." - }, - "resourceRootPath": { - "type": "string", - "description": "Localisation des ressources i18n, relative au répertoire de génération. Si non renseigné, aucun fichier ne sera généré" - }, - "apiClientRootPath": { - "type": "string", - "description": "Localisation des clients d'API, relative au répertoire de génération. Si non renseigné, aucun fichier ne sera généré." - }, - "apiClientFilePath": { - "type": "string", - "description": "Chemin vers lequel sont créés les fichiers d'endpoints générés, relatif à la racine de l'API. En mode Angular, la valeur par défaut est `{module}/{fileName}.service`", - "default": "{module}/{fileName}" - }, - "fetchPath": { - "type": "string", - "description": "Chemin ou import vers un 'fetch' personnalisé, relatif au répertoire de génération s'il commence par un '.'." - }, - "domainPath": { - "type": "string", - "description": "Chemin ou import vers le fichier 'domain', relatif au répertoire de génération s'il commence par un '.'.", - "default": "../domains" - }, - "apiMode": { - "type": "string", - "description": "Framework cible pour la génération.", - "default": "focus", - "enum": [ - "angular", - "angular_promise", - "vanilla", - "nuxt" - ] - }, - "entityMode": { - "type": "string", - "description": "Framework cible pour la génération.", - "default": "typed", - "enum": [ - "untyped", - "typed" - ] - }, - "extendedCompositions": { - "type": "boolean", - "description": "Génère `isRequired`, `label` (et `comment`) sur les compositions dans les entitées typées." - }, - "entityTypesPath": { - "type": "string", - "description": "Chemin d'import des type d'entités", - "default": "@focus4/stores" - }, - "resourceMode": { - "type": "string", - "description": "Mode de génération (JS, JSON ou JSON Schema).", - "enum": [ - "js", - "json" - ] - }, - "translateReferences": { - "type": "boolean", - "description": "Si les listes de référence doivent être traduites", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits", - "default": "true" - }, - "generateComments": { - "type": "boolean", - "description": "Ajoute les commentaires dans les entités JS générées." - }, - "generateMainResourceFiles": { - "type": "boolean", - "description": "Génère un fichier 'index.ts' qui importe et réexporte tous les fichiers de resources générés par langue. Uniquement compatible avec `resourceMode: js`." - }, - "referenceMode": { - "type": "string", - "description": "Mode de génération des listes de références (définitions ou valeurs).", - "enum": [ - "definition", - "values" - ], - "default": "definition" - } - } - } - }, - "jpa": { - "type": "array", - "items": { - "type": "object", - "description": "Config pour la génération de Jpa.", - "additionalProperties": false, - "required": [ - "tags", - "outputDirectory" - ], - "properties": { - "language": { - "type": "string", - "description": "Langage du générateur, utilisé pour choisir l'implémentation correspondante des domaines, décorateurs et convertisseurs. Par défaut : 'java'." - }, - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "type": "string" - } - } - }, - "tagVariables": { - "type": "object", - "description": "Définitions de variables par tag à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".*": { - "type": "object", - "patternProperties": { - ".*": { - "type": "string" - } - } - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "JpaModelGen", - "JpaInterfaceGen", - "JpaMapperGenerator", - "JpaDaoGen", - "JpaEnumGenerator", - "JpaResourceGen", - "SpringApiServerGen", - "SpringApiClientGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "translateReferences": { - "type": "boolean", - "description": "Si les libellés des listes de références doivent être traduits.", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits.", - "default": "true" - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "entitiesPath": { - "type": "string", - "description": "Localisation des classes persistées du modèle, relative au répertoire de génération. Par défaut, 'javagen:{app}/entities/{module}'." - }, - "daosPath": { - "type": "string", - "description": "Localisation des DAOs, relative au répertoire de génération." - }, - "dtosPath": { - "type": "string", - "description": "Localisation des classes non persistées du modèle, relative au répertoire de génération. Par défaut, 'javagen:{app}/dtos/{module}'." - }, - "enumsPath": { - "type": "string", - "description": "Localisation des enums du modèle, relative au répertoire de génération.", - "default": "javagen:{app}/enums/{module}" - }, - "apiPath": { - "type": "string", - "description": "Localisation du l'API générée (client ou serveur), relative au répertoire de génération. Par défaut, 'javagen:{app}/api/{module}'.", - "default": "javagen:{app}/api/{module}" - }, - "compositionConverterCanonicalName": { - "type": "string", - "description": "Nom complet de la classe permettant de convertir les compositions stockées en json dans la bdd. Supporte le template {package} et {class}", - "default": "{package}.{class}Converter" - }, - "apiGeneration": { - "oneOf": [ - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "enum": [ - "Client", - "Server" - ] - }, - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "clientApiGeneration": { - "oneOf": [ - { - "type": "string", - "description": "Mode de génération de l'API Client ('Client' ou 'Server')", - "default": "RestClient", - "enum": [ - "RestTemplate", - "RestClient" - ] - }, - { - "type": "string", - "description": "Mode de génération de l'API ('RestTemplate' ou 'RestClient')", - "default": "RestClient", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "resourcesPath": { - "type": "string", - "description": "Localisation des ressources, relative au répertoire de génération." - }, - "resourcesEncoding": { - "type": "string", - "description": "Encodage des fichiers de resource.", - "default": "Latin1", - "enum": [ - "Latin1", - "UTF8" - ] - }, - "useJdbc": { - "type": "boolean", - "description": "Générer les entités en mode JDBC", - "default": "false" - }, - "daosAbstract": { - "type": "boolean", - "description": " Génération d'interface Abstract avec @NoRepositoryBean permettant de mettre à jour le code généré", - "default": "false" - }, - "daosInterface": { - "type": "string", - "description": "Précise l'interface des Daos générés.", - "default": "false" - }, - "mappersInClass": { - "type": "boolean", - "description": "Indique s'il faut ajouter les mappers en tant méthode ou constructeur dans les classes qui les déclarent" - }, - "dataFlowsPath": { - "type": "string", - "description": "Localisation des flux de données générés." - }, - "dataFlowsBulkSize": { - "type": "number", - "description": "Taille des chunks à extraire et insérer" - }, - "dataFlowsListeners": { - "type": "array", - "description": "Listeners à ajouter à tous les dataflows", - "items": { - "type": "string", - "description": "Listener à ajouter à tous les dataflows" - } - }, - "dbSchema": { - "type": "string", - "description": "Nom du schéma sur lequel les entités sont sauvegardées" - }, - "enumShortcutMode": { - "type": "boolean", - "description": "Option pour générer des getters et setters vers l'enum des références plutôt que sur la table", - "default": "false" - }, - "associationAdders": { - "type": "boolean", - "description": "Option pour générer des méthodes d'ajouts pour les associations oneToMany et manyToMany. Ces méthodes permettent de synchroniser les objets ajoutés", - "default": "false" - }, - "associationRemovers": { - "type": "boolean", - "description": "Option pour générer des méthodes de suppression pour les associations oneToMany et manyToMany. Ces méthodes permettent de synchroniser les objets supprimés", - "default": "false" - }, - "generatedHint": { - "type": "boolean", - "description": "Option pour générer l'annotation @Generated('TopModel : https://github.com/klee-contrib/topmodel')", - "default": "true" - }, - "fieldsEnum": { - "type": "string", - "description": "Option pour générer une enum des champs des classes persistées", - "default": "None", - "enum": [ - "None", - "Persisted", - "Dto", - "Persisted_Dto" - ] - }, - "fieldsEnumInterface": { - "type": "string", - "description": "Précise l'interface des fields enum générés." - }, - "persistenceMode": { - "type": "string", - "description": "Mode de génération de la persistence ('Javax' ou 'Jakarta')", - "enum": [ - "javax", - "jakarta" - ] - }, - "identity": { - "type": "object", - "description": "Options de génération de la séquence", - "properties": { - "mode": { - "type": "string", - "description": "Mode de génération des séquences.", - "enum": [ - "none", - "sequence", - "identity" - ], - "default": "identity" - }, - "increment": { - "type": "number", - "description": "Incrément de la séquence générée." - }, - "start": { - "type": "number", - "description": "Début de la séquence générée." - } - } - } - } - } - }, - "sql": { - "type": "array", - "items": { - "type": "object", - "description": "Config pour la génération de SQL.", - "additionalProperties": false, - "required": [ - "outputDirectory", - "tags" - ], - "properties": { - "language": { - "type": "string", - "description": "Langage du générateur, utilisé pour choisir l'implémentation correspondante des domaines, décorateurs et convertisseurs. Par défaut : 'sql'." - }, - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "type": "string" - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "SsdtGen", - "ProceduralSqlGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "translateReferences": { - "type": "boolean", - "description": "Si les libellés des listes de références doivent être traduits.", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits.", - "default": "true" - }, - "resourcesTableName": { - "type": "string", - "description": "Nom de la table dans laquelle doivent être insérées les traductions." - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "targetDBMS": { - "type": "string", - "description": "SGBD cible ('postgre' ou 'sqlserver').", - "enum": [ - "sqlserver", - "postgre" - ] - }, - "procedural": { - "type": "object", - "description": "Config pour la génération de SQL 'procédurale'.", - "additionalProperties": false, - "properties": { - "crebasFile": { - "type": "string", - "description": "Emplacement du fichier de création de base." - }, - "uniqueKeysFile": { - "type": "string", - "description": "Emplacement du fichier de création des index uniques." - }, - "indexFKFile": { - "type": "string", - "description": "Emplacement du fichier de création des clés étrangères." - }, - "typeFile": { - "type": "string", - "description": "Emplacement du fichier de création des types." - }, - "commentFile": { - "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." - }, - "identity": { - "type": "object", - "description": "Options de génération de la séquence", - "properties": { - "mode": { - "type": "string", - "description": "Mode de génération des séquences.", - "enum": [ - "none", - "sequence", - "identity" - ], - "default": "identity" - }, - "increment": { - "type": "number", - "description": "Incrément de la séquence générée." - }, - "start": { - "type": "number", - "description": "Début de la séquence générée." - } - } - } - } - }, - "ssdt": { - "type": "object", - "description": "Config pour la génération SSDT", - "additionalProperties": false, - "properties": { - "tableScriptFolder": { - "type": "string", - "description": "Dossier du projet pour les scripts de déclaration de table." - }, - "tableTypeScriptFolder": { - "type": "string", - "description": " Dossier du projet pour les scripts de déclaration de type table." - }, - "initListScriptFolder": { - "type": "string", - "description": "Dossier du projet pour les scripts d'initialisation des listes de références." - }, - "initListMainScriptName": { - "type": "string", - "description": "Fichier du projet référençant les scripts d'initialisation des listes de références." - }, - "disableIdentity": { - "type": "boolean", - "description": "Désactive les colonnes d'identité." - } - } - } - } - } - }, - "translation": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": false, - "required": [ - "outputDirectory", - "tags" - ], - "properties": { - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "type": "string" - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "JTranslationOutGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "translateReferences": { - "type": "boolean", - "description": "Si les libellés des listes de références doivent être traduits.", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits.", - "default": "true" - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "rootPath": { - "type": "string", - "description": "Template du chemin des dossiers de traductions sortants (manquants). Doit contenir le template {lang}", - "default": "{lang}" - }, - "defaultLang": { - "type": "string", - "description": "Langue par défaut (celle dans laquelle sont écris les labels dans les fichiers .tmd" - }, - "langs": { - "type": "array", - "items": { - "type": "string", - "description": "Code du angage" - } - } - } - } } }, "additionalProperties": false diff --git a/samples/generators/database/topmodel.config.schema.json b/samples/generators/database/topmodel.config.schema.json index 7dcf64b3..84914526 100644 --- a/samples/generators/database/topmodel.config.schema.json +++ b/samples/generators/database/topmodel.config.schema.json @@ -88,930 +88,6 @@ "items": { "type": "string" } - }, - "csharp": { - "type": "array", - "items": { - "type": "object", - "description": "Config pour la génération de C#.", - "additionalProperties": false, - "required": [ - "outputDirectory", - "tags" - ], - "properties": { - "language": { - "type": "string", - "description": "Langage du générateur, utilisé pour choisir l'implémentation correspondante des domaines, décorateurs et convertisseurs. Par défaut : 'csharp'." - }, - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "boolean" - } - ] - } - } - }, - "tagVariables": { - "type": "object", - "description": "Définitions de variables par tag à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".*": { - "type": "object", - "patternProperties": { - ".*": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "boolean" - } - ] - } - } - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "CSharpClassGen", - "CSharpMapperGen", - "CSharpDbContextGen", - "CSharpRefAccessGen", - "CSharpApiServerGen", - "CSharpApiClientGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "translateReferences": { - "type": "boolean", - "description": "Si les libellés des listes de références doivent être traduits.", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits.", - "default": "true" - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "persistentModelPath": { - "type": "string", - "description": "Localisation du modèle persisté, relative au répertoire de génération. Par défaut : {app}.{module}.Models." - }, - "referencesModelPath": { - "type": "string", - "description": "Localisation des classes de références, relative au répertoire de génération. Si non renseigné, ces classes seront générées comme les autres (selon si elles sont persistantes ou non)." - }, - "nonPersistentModelPath": { - "type": "string", - "description": "Localisation du modèle non persisté, relative au répertoire de génération. Par défaut : {app}.{module}.Models/Dto." - }, - "apiRootPath": { - "type": "string", - "description": "Localisation du l'API générée (client ou serveur), relative au répertoire de génération. Par défaut : {app}.Web." - }, - "apiFilePath": { - "type": "string", - "description": "Chemin vers lequel sont créés les fichiers d'endpoints générés, relative à la racine de l'API. Par défaut : {module}." - }, - "apiGeneration": { - "oneOf": [ - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "enum": [ - "Client", - "Server" - ] - }, - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "dataFlowsPath": { - "type": "string", - "description": "Localisation des flux de données générés." - }, - "useEFMigrations": { - "type": "boolean", - "description": "Utilise les migrations EF pour créer/mettre à jour la base de données. Par défaut : 'true'." - }, - "dbContextPath": { - "type": "string", - "description": "Localisation du DbContext, relative au répertoire de génération." - }, - "dbContextName": { - "type": "string", - "description": "Nom du DbContext. Par défaut : {app}DbContext." - }, - "referenceAccessorsInterfacePath": { - "type": "string", - "description": "Chemin vers lequel générer les interfaces d'accesseurs de référence. Par défaut : {DbContextPath}/Reference." - }, - "referenceAccessorsImplementationPath": { - "type": "string", - "description": "Chemin vers lequel générer les implémentation d'accesseurs de référence. Par défaut : {DbContextPath}/Reference." - }, - "referenceAccessorsName": { - "type": "string", - "description": "Nom des accesseurs de référence (préfixé par 'I' pour l'interface). Par défaut : {module}ReferenceAccessors." - }, - "noAsyncControllers": { - "type": "boolean", - "description": "Génère des contrôleurs d'API synchrones." - }, - "useLowerCaseSqlNames": { - "type": "boolean", - "description": "Utilise des noms de tables et de colonnes en lowercase. Par défaut : 'true'." - }, - "dbSchema": { - "type": "string", - "description": "Le nom du schéma de base de données à cibler (si non renseigné, EF utilise 'dbo')." - }, - "kinetix": { - "type": "boolean", - "description": "Si on génère avec Kinetix." - }, - "domainNamespace": { - "type": "string", - "description": "Namespace de l'enum de domaine pour Kinetix. Par défaut : '{app}.Common'." - }, - "valueTypes": { - "type": "array", - "description": "Types C# que le générateur doit considérer comme étant types valeurs (en plus des plus standard comme 'int', 'bool' ou 'DateTime'), qu'il faudra wrapper dans un `Nullable` (avec un `?`) pour les rendre nullables.", - "items": { - "type": "string" - } - }, - "nullableEnable": { - "type": "boolean", - "description": "Prend en compte l'activation du paramètre `nullable: enable` dans le code généré (pour ajouter des `?` derrière les types références nullables)." - }, - "requiredNonNullable": { - "oneOf": [ - { - "type": "boolean", - "description": "Génère des types non-nullables pour les propriétés obligatoires." - }, - { - "type": "string", - "description": "Génère des types non-nullables pour les propriétés obligatoires.", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "noColumnOnAlias": { - "type": "boolean", - "description": "Ne génère pas les attributs de colonnes sur les alias dans les classes non persistées. Par défaut : 'true'." - }, - "noPersistence": { - "oneOf": [ - { - "type": "boolean", - "description": "Considère tous les classes comme étant non-persistantes (= pas d'attribut SQL)." - }, - { - "type": "string", - "description": "Considère tous les classes comme étant non-persistantes (= pas d'attribut SQL).", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "mapperTagsOverrides": { - "type": "array", - "description": "Si un mapper contient au moins une classe de ces tags, alors il sera généré avec les tags de cette classe (au lieu du comportement par défaut qui priorise les tags de la classe persistée puis de celle qui définit le mapper).", - "items": { - "type": "string" - } - }, - "mapperLocationPriority": { - "type": "string", - "description": "Détermine le type de classe prioritaire pour déterminer la localisation des mappers générés (`persistent` ou `non-persistent`). Par défaut : 'persistent'", - "enum": [ - "persistent", - "non-persistent" - ] - }, - "enumsForStaticReferences": { - "type": "boolean", - "description": "Utilise des enums au lieu de strings pour les PKs de listes de référence statiques." - }, - "useEFComments": { - "type": "boolean", - "description": "Annote les tables et les colonnes générées par EF avec les commentaires du modèle (nécessite `UseEFMigrations`)." - }, - "useRecords": { - "type": [ - "string", - "boolean" - ], - "description": "Utilise des records (mutables) au lieu de classes pour la génération de classes.", - "enum": [ - true, - false, - "dtos-only" - ] - }, - "usePrimaryConstructors": { - "type": "boolean", - "description": "Utilise les constructeurs principaux pour la génération des classes avec dépendances (clients d'API, accesseurs de références)." - } - } - } - }, - "javascript": { - "type": "array", - "items": { - "type": "object", - "description": "Config pour la génération de Javascript.", - "additionalProperties": false, - "required": [ - "outputDirectory", - "tags" - ], - "properties": { - "language": { - "type": "string", - "description": "Langage du générateur, utilisé pour choisir l'implémentation correspondante des domaines, décorateurs et convertisseurs. Par défaut : 'ts'." - }, - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "type": "string" - } - } - }, - "tagVariables": { - "type": "object", - "description": "Définitions de variables par tag à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".*": { - "type": "object", - "patternProperties": { - ".*": { - "type": "string" - } - } - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "JSDefinitionGen", - "JSReferenceGen", - "JSNGApiClientGen", - "JSApiClientGen", - "JSResourceGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "modelRootPath": { - "type": "string", - "description": "Localisation du modèle, relative au répertoire de génération. Si non renseigné, aucun modèle ne sera généré." - }, - "resourceRootPath": { - "type": "string", - "description": "Localisation des ressources i18n, relative au répertoire de génération. Si non renseigné, aucun fichier ne sera généré" - }, - "apiClientRootPath": { - "type": "string", - "description": "Localisation des clients d'API, relative au répertoire de génération. Si non renseigné, aucun fichier ne sera généré." - }, - "apiClientFilePath": { - "type": "string", - "description": "Chemin vers lequel sont créés les fichiers d'endpoints générés, relatif à la racine de l'API. En mode Angular, la valeur par défaut est `{module}/{fileName}.service`", - "default": "{module}/{fileName}" - }, - "fetchPath": { - "type": "string", - "description": "Chemin ou import vers un 'fetch' personnalisé, relatif au répertoire de génération s'il commence par un '.'." - }, - "domainPath": { - "type": "string", - "description": "Chemin ou import vers le fichier 'domain', relatif au répertoire de génération s'il commence par un '.'.", - "default": "../domains" - }, - "apiMode": { - "type": "string", - "description": "Framework cible pour la génération.", - "default": "focus", - "enum": [ - "angular", - "angular_promise", - "vanilla", - "nuxt" - ] - }, - "entityMode": { - "type": "string", - "description": "Framework cible pour la génération.", - "default": "typed", - "enum": [ - "untyped", - "typed" - ] - }, - "extendedCompositions": { - "type": "boolean", - "description": "Génère `isRequired`, `label` (et `comment`) sur les compositions dans les entitées typées." - }, - "entityTypesPath": { - "type": "string", - "description": "Chemin d'import des type d'entités", - "default": "@focus4/stores" - }, - "resourceMode": { - "type": "string", - "description": "Mode de génération (JS, JSON ou JSON Schema).", - "enum": [ - "js", - "json" - ] - }, - "translateReferences": { - "type": "boolean", - "description": "Si les listes de référence doivent être traduites", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits", - "default": "true" - }, - "generateComments": { - "type": "boolean", - "description": "Ajoute les commentaires dans les entités JS générées." - }, - "generateMainResourceFiles": { - "type": "boolean", - "description": "Génère un fichier 'index.ts' qui importe et réexporte tous les fichiers de resources générés par langue. Uniquement compatible avec `resourceMode: js`." - }, - "referenceMode": { - "type": "string", - "description": "Mode de génération des listes de références (définitions ou valeurs).", - "enum": [ - "definition", - "values" - ], - "default": "definition" - } - } - } - }, - "jpa": { - "type": "array", - "items": { - "type": "object", - "description": "Config pour la génération de Jpa.", - "additionalProperties": false, - "required": [ - "tags", - "outputDirectory" - ], - "properties": { - "language": { - "type": "string", - "description": "Langage du générateur, utilisé pour choisir l'implémentation correspondante des domaines, décorateurs et convertisseurs. Par défaut : 'java'." - }, - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "type": "string" - } - } - }, - "tagVariables": { - "type": "object", - "description": "Définitions de variables par tag à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".*": { - "type": "object", - "patternProperties": { - ".*": { - "type": "string" - } - } - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "JpaModelGen", - "JpaInterfaceGen", - "JpaMapperGenerator", - "JpaDaoGen", - "JpaEnumGenerator", - "JpaResourceGen", - "SpringApiServerGen", - "SpringApiClientGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "translateReferences": { - "type": "boolean", - "description": "Si les libellés des listes de références doivent être traduits.", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits.", - "default": "true" - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "entitiesPath": { - "type": "string", - "description": "Localisation des classes persistées du modèle, relative au répertoire de génération. Par défaut, 'javagen:{app}/entities/{module}'." - }, - "daosPath": { - "type": "string", - "description": "Localisation des DAOs, relative au répertoire de génération." - }, - "dtosPath": { - "type": "string", - "description": "Localisation des classes non persistées du modèle, relative au répertoire de génération. Par défaut, 'javagen:{app}/dtos/{module}'." - }, - "enumsPath": { - "type": "string", - "description": "Localisation des enums du modèle, relative au répertoire de génération.", - "default": "javagen:{app}/enums/{module}" - }, - "apiPath": { - "type": "string", - "description": "Localisation du l'API générée (client ou serveur), relative au répertoire de génération. Par défaut, 'javagen:{app}/api/{module}'.", - "default": "javagen:{app}/api/{module}" - }, - "compositionConverterCanonicalName": { - "type": "string", - "description": "Nom complet de la classe permettant de convertir les compositions stockées en json dans la bdd. Supporte le template {package} et {class}", - "default": "{package}.{class}Converter" - }, - "apiGeneration": { - "oneOf": [ - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "enum": [ - "Client", - "Server" - ] - }, - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "clientApiGeneration": { - "oneOf": [ - { - "type": "string", - "description": "Mode de génération de l'API Client ('Client' ou 'Server')", - "default": "RestClient", - "enum": [ - "RestTemplate", - "RestClient" - ] - }, - { - "type": "string", - "description": "Mode de génération de l'API ('RestTemplate' ou 'RestClient')", - "default": "RestClient", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "resourcesPath": { - "type": "string", - "description": "Localisation des ressources, relative au répertoire de génération." - }, - "resourcesEncoding": { - "type": "string", - "description": "Encodage des fichiers de resource.", - "default": "Latin1", - "enum": [ - "Latin1", - "UTF8" - ] - }, - "useJdbc": { - "type": "boolean", - "description": "Générer les entités en mode JDBC", - "default": "false" - }, - "daosAbstract": { - "type": "boolean", - "description": " Génération d'interface Abstract avec @NoRepositoryBean permettant de mettre à jour le code généré", - "default": "false" - }, - "daosInterface": { - "type": "string", - "description": "Précise l'interface des Daos générés.", - "default": "false" - }, - "mappersInClass": { - "type": "boolean", - "description": "Indique s'il faut ajouter les mappers en tant méthode ou constructeur dans les classes qui les déclarent" - }, - "dataFlowsPath": { - "type": "string", - "description": "Localisation des flux de données générés." - }, - "dataFlowsBulkSize": { - "type": "number", - "description": "Taille des chunks à extraire et insérer" - }, - "dataFlowsListeners": { - "type": "array", - "description": "Listeners à ajouter à tous les dataflows", - "items": { - "type": "string", - "description": "Listener à ajouter à tous les dataflows" - } - }, - "dbSchema": { - "type": "string", - "description": "Nom du schéma sur lequel les entités sont sauvegardées" - }, - "enumShortcutMode": { - "type": "boolean", - "description": "Option pour générer des getters et setters vers l'enum des références plutôt que sur la table", - "default": "false" - }, - "associationAdders": { - "type": "boolean", - "description": "Option pour générer des méthodes d'ajouts pour les associations oneToMany et manyToMany. Ces méthodes permettent de synchroniser les objets ajoutés", - "default": "false" - }, - "associationRemovers": { - "type": "boolean", - "description": "Option pour générer des méthodes de suppression pour les associations oneToMany et manyToMany. Ces méthodes permettent de synchroniser les objets supprimés", - "default": "false" - }, - "generatedHint": { - "type": "boolean", - "description": "Option pour générer l'annotation @Generated('TopModel : https://github.com/klee-contrib/topmodel')", - "default": "true" - }, - "fieldsEnum": { - "type": "string", - "description": "Option pour générer une enum des champs des classes persistées", - "default": "None", - "enum": [ - "None", - "Persisted", - "Dto", - "Persisted_Dto" - ] - }, - "fieldsEnumInterface": { - "type": "string", - "description": "Précise l'interface des fields enum générés." - }, - "persistenceMode": { - "type": "string", - "description": "Mode de génération de la persistence ('Javax' ou 'Jakarta')", - "enum": [ - "javax", - "jakarta" - ] - }, - "identity": { - "type": "object", - "description": "Options de génération de la séquence", - "properties": { - "mode": { - "type": "string", - "description": "Mode de génération des séquences.", - "enum": [ - "none", - "sequence", - "identity" - ], - "default": "identity" - }, - "increment": { - "type": "number", - "description": "Incrément de la séquence générée." - }, - "start": { - "type": "number", - "description": "Début de la séquence générée." - } - } - } - } - } - }, - "sql": { - "type": "array", - "items": { - "type": "object", - "description": "Config pour la génération de SQL.", - "additionalProperties": false, - "required": [ - "outputDirectory", - "tags" - ], - "properties": { - "language": { - "type": "string", - "description": "Langage du générateur, utilisé pour choisir l'implémentation correspondante des domaines, décorateurs et convertisseurs. Par défaut : 'sql'." - }, - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "type": "string" - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "SsdtGen", - "ProceduralSqlGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "translateReferences": { - "type": "boolean", - "description": "Si les libellés des listes de références doivent être traduits.", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits.", - "default": "true" - }, - "resourcesTableName": { - "type": "string", - "description": "Nom de la table dans laquelle doivent être insérées les traductions." - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "targetDBMS": { - "type": "string", - "description": "SGBD cible ('postgre' ou 'sqlserver').", - "enum": [ - "sqlserver", - "postgre" - ] - }, - "procedural": { - "type": "object", - "description": "Config pour la génération de SQL 'procédurale'.", - "additionalProperties": false, - "properties": { - "crebasFile": { - "type": "string", - "description": "Emplacement du fichier de création de base." - }, - "uniqueKeysFile": { - "type": "string", - "description": "Emplacement du fichier de création des index uniques." - }, - "indexFKFile": { - "type": "string", - "description": "Emplacement du fichier de création des clés étrangères." - }, - "typeFile": { - "type": "string", - "description": "Emplacement du fichier de création des types." - }, - "commentFile": { - "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." - }, - "identity": { - "type": "object", - "description": "Options de génération de la séquence", - "properties": { - "mode": { - "type": "string", - "description": "Mode de génération des séquences.", - "enum": [ - "none", - "sequence", - "identity" - ], - "default": "identity" - }, - "increment": { - "type": "number", - "description": "Incrément de la séquence générée." - }, - "start": { - "type": "number", - "description": "Début de la séquence générée." - } - } - } - } - }, - "ssdt": { - "type": "object", - "description": "Config pour la génération SSDT", - "additionalProperties": false, - "properties": { - "tableScriptFolder": { - "type": "string", - "description": "Dossier du projet pour les scripts de déclaration de table." - }, - "tableTypeScriptFolder": { - "type": "string", - "description": " Dossier du projet pour les scripts de déclaration de type table." - }, - "initListScriptFolder": { - "type": "string", - "description": "Dossier du projet pour les scripts d'initialisation des listes de références." - }, - "initListMainScriptName": { - "type": "string", - "description": "Fichier du projet référençant les scripts d'initialisation des listes de références." - }, - "disableIdentity": { - "type": "boolean", - "description": "Désactive les colonnes d'identité." - } - } - } - } - } - }, - "translation": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": false, - "required": [ - "outputDirectory", - "tags" - ], - "properties": { - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "type": "string" - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "JTranslationOutGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "translateReferences": { - "type": "boolean", - "description": "Si les libellés des listes de références doivent être traduits.", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits.", - "default": "true" - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "rootPath": { - "type": "string", - "description": "Template du chemin des dossiers de traductions sortants (manquants). Doit contenir le template {lang}", - "default": "{lang}" - }, - "defaultLang": { - "type": "string", - "description": "Langue par défaut (celle dans laquelle sont écris les labels dans les fichiers .tmd" - }, - "langs": { - "type": "array", - "items": { - "type": "string", - "description": "Code du angage" - } - } - } - } } }, "additionalProperties": false diff --git a/samples/generators/focus/topmodel.config b/samples/generators/focus/topmodel.config index 6da8cf5f..63e58b40 100644 --- a/samples/generators/focus/topmodel.config +++ b/samples/generators/focus/topmodel.config @@ -3,6 +3,8 @@ app: Focus modelRoot: ../../model lockFileName: focus.topmodel.lock +generators: + - ../../../TopModel.Generator.Javascript i18n: translateReferences: false javascript: diff --git a/samples/generators/focus/topmodel.config.schema.json b/samples/generators/focus/topmodel.config.schema.json index 7dcf64b3..8dc06ad7 100644 --- a/samples/generators/focus/topmodel.config.schema.json +++ b/samples/generators/focus/topmodel.config.schema.json @@ -89,267 +89,6 @@ "type": "string" } }, - "csharp": { - "type": "array", - "items": { - "type": "object", - "description": "Config pour la génération de C#.", - "additionalProperties": false, - "required": [ - "outputDirectory", - "tags" - ], - "properties": { - "language": { - "type": "string", - "description": "Langage du générateur, utilisé pour choisir l'implémentation correspondante des domaines, décorateurs et convertisseurs. Par défaut : 'csharp'." - }, - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "boolean" - } - ] - } - } - }, - "tagVariables": { - "type": "object", - "description": "Définitions de variables par tag à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".*": { - "type": "object", - "patternProperties": { - ".*": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "boolean" - } - ] - } - } - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "CSharpClassGen", - "CSharpMapperGen", - "CSharpDbContextGen", - "CSharpRefAccessGen", - "CSharpApiServerGen", - "CSharpApiClientGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "translateReferences": { - "type": "boolean", - "description": "Si les libellés des listes de références doivent être traduits.", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits.", - "default": "true" - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "persistentModelPath": { - "type": "string", - "description": "Localisation du modèle persisté, relative au répertoire de génération. Par défaut : {app}.{module}.Models." - }, - "referencesModelPath": { - "type": "string", - "description": "Localisation des classes de références, relative au répertoire de génération. Si non renseigné, ces classes seront générées comme les autres (selon si elles sont persistantes ou non)." - }, - "nonPersistentModelPath": { - "type": "string", - "description": "Localisation du modèle non persisté, relative au répertoire de génération. Par défaut : {app}.{module}.Models/Dto." - }, - "apiRootPath": { - "type": "string", - "description": "Localisation du l'API générée (client ou serveur), relative au répertoire de génération. Par défaut : {app}.Web." - }, - "apiFilePath": { - "type": "string", - "description": "Chemin vers lequel sont créés les fichiers d'endpoints générés, relative à la racine de l'API. Par défaut : {module}." - }, - "apiGeneration": { - "oneOf": [ - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "enum": [ - "Client", - "Server" - ] - }, - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "dataFlowsPath": { - "type": "string", - "description": "Localisation des flux de données générés." - }, - "useEFMigrations": { - "type": "boolean", - "description": "Utilise les migrations EF pour créer/mettre à jour la base de données. Par défaut : 'true'." - }, - "dbContextPath": { - "type": "string", - "description": "Localisation du DbContext, relative au répertoire de génération." - }, - "dbContextName": { - "type": "string", - "description": "Nom du DbContext. Par défaut : {app}DbContext." - }, - "referenceAccessorsInterfacePath": { - "type": "string", - "description": "Chemin vers lequel générer les interfaces d'accesseurs de référence. Par défaut : {DbContextPath}/Reference." - }, - "referenceAccessorsImplementationPath": { - "type": "string", - "description": "Chemin vers lequel générer les implémentation d'accesseurs de référence. Par défaut : {DbContextPath}/Reference." - }, - "referenceAccessorsName": { - "type": "string", - "description": "Nom des accesseurs de référence (préfixé par 'I' pour l'interface). Par défaut : {module}ReferenceAccessors." - }, - "noAsyncControllers": { - "type": "boolean", - "description": "Génère des contrôleurs d'API synchrones." - }, - "useLowerCaseSqlNames": { - "type": "boolean", - "description": "Utilise des noms de tables et de colonnes en lowercase. Par défaut : 'true'." - }, - "dbSchema": { - "type": "string", - "description": "Le nom du schéma de base de données à cibler (si non renseigné, EF utilise 'dbo')." - }, - "kinetix": { - "type": "boolean", - "description": "Si on génère avec Kinetix." - }, - "domainNamespace": { - "type": "string", - "description": "Namespace de l'enum de domaine pour Kinetix. Par défaut : '{app}.Common'." - }, - "valueTypes": { - "type": "array", - "description": "Types C# que le générateur doit considérer comme étant types valeurs (en plus des plus standard comme 'int', 'bool' ou 'DateTime'), qu'il faudra wrapper dans un `Nullable` (avec un `?`) pour les rendre nullables.", - "items": { - "type": "string" - } - }, - "nullableEnable": { - "type": "boolean", - "description": "Prend en compte l'activation du paramètre `nullable: enable` dans le code généré (pour ajouter des `?` derrière les types références nullables)." - }, - "requiredNonNullable": { - "oneOf": [ - { - "type": "boolean", - "description": "Génère des types non-nullables pour les propriétés obligatoires." - }, - { - "type": "string", - "description": "Génère des types non-nullables pour les propriétés obligatoires.", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "noColumnOnAlias": { - "type": "boolean", - "description": "Ne génère pas les attributs de colonnes sur les alias dans les classes non persistées. Par défaut : 'true'." - }, - "noPersistence": { - "oneOf": [ - { - "type": "boolean", - "description": "Considère tous les classes comme étant non-persistantes (= pas d'attribut SQL)." - }, - { - "type": "string", - "description": "Considère tous les classes comme étant non-persistantes (= pas d'attribut SQL).", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "mapperTagsOverrides": { - "type": "array", - "description": "Si un mapper contient au moins une classe de ces tags, alors il sera généré avec les tags de cette classe (au lieu du comportement par défaut qui priorise les tags de la classe persistée puis de celle qui définit le mapper).", - "items": { - "type": "string" - } - }, - "mapperLocationPriority": { - "type": "string", - "description": "Détermine le type de classe prioritaire pour déterminer la localisation des mappers générés (`persistent` ou `non-persistent`). Par défaut : 'persistent'", - "enum": [ - "persistent", - "non-persistent" - ] - }, - "enumsForStaticReferences": { - "type": "boolean", - "description": "Utilise des enums au lieu de strings pour les PKs de listes de référence statiques." - }, - "useEFComments": { - "type": "boolean", - "description": "Annote les tables et les colonnes générées par EF avec les commentaires du modèle (nécessite `UseEFMigrations`)." - }, - "useRecords": { - "type": [ - "string", - "boolean" - ], - "description": "Utilise des records (mutables) au lieu de classes pour la génération de classes.", - "enum": [ - true, - false, - "dtos-only" - ] - }, - "usePrimaryConstructors": { - "type": "boolean", - "description": "Utilise les constructeurs principaux pour la génération des classes avec dépendances (clients d'API, accesseurs de références)." - } - } - } - }, "javascript": { "type": "array", "items": { @@ -510,508 +249,6 @@ } } } - }, - "jpa": { - "type": "array", - "items": { - "type": "object", - "description": "Config pour la génération de Jpa.", - "additionalProperties": false, - "required": [ - "tags", - "outputDirectory" - ], - "properties": { - "language": { - "type": "string", - "description": "Langage du générateur, utilisé pour choisir l'implémentation correspondante des domaines, décorateurs et convertisseurs. Par défaut : 'java'." - }, - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "type": "string" - } - } - }, - "tagVariables": { - "type": "object", - "description": "Définitions de variables par tag à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".*": { - "type": "object", - "patternProperties": { - ".*": { - "type": "string" - } - } - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "JpaModelGen", - "JpaInterfaceGen", - "JpaMapperGenerator", - "JpaDaoGen", - "JpaEnumGenerator", - "JpaResourceGen", - "SpringApiServerGen", - "SpringApiClientGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "translateReferences": { - "type": "boolean", - "description": "Si les libellés des listes de références doivent être traduits.", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits.", - "default": "true" - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "entitiesPath": { - "type": "string", - "description": "Localisation des classes persistées du modèle, relative au répertoire de génération. Par défaut, 'javagen:{app}/entities/{module}'." - }, - "daosPath": { - "type": "string", - "description": "Localisation des DAOs, relative au répertoire de génération." - }, - "dtosPath": { - "type": "string", - "description": "Localisation des classes non persistées du modèle, relative au répertoire de génération. Par défaut, 'javagen:{app}/dtos/{module}'." - }, - "enumsPath": { - "type": "string", - "description": "Localisation des enums du modèle, relative au répertoire de génération.", - "default": "javagen:{app}/enums/{module}" - }, - "apiPath": { - "type": "string", - "description": "Localisation du l'API générée (client ou serveur), relative au répertoire de génération. Par défaut, 'javagen:{app}/api/{module}'.", - "default": "javagen:{app}/api/{module}" - }, - "compositionConverterCanonicalName": { - "type": "string", - "description": "Nom complet de la classe permettant de convertir les compositions stockées en json dans la bdd. Supporte le template {package} et {class}", - "default": "{package}.{class}Converter" - }, - "apiGeneration": { - "oneOf": [ - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "enum": [ - "Client", - "Server" - ] - }, - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "clientApiGeneration": { - "oneOf": [ - { - "type": "string", - "description": "Mode de génération de l'API Client ('Client' ou 'Server')", - "default": "RestClient", - "enum": [ - "RestTemplate", - "RestClient" - ] - }, - { - "type": "string", - "description": "Mode de génération de l'API ('RestTemplate' ou 'RestClient')", - "default": "RestClient", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "resourcesPath": { - "type": "string", - "description": "Localisation des ressources, relative au répertoire de génération." - }, - "resourcesEncoding": { - "type": "string", - "description": "Encodage des fichiers de resource.", - "default": "Latin1", - "enum": [ - "Latin1", - "UTF8" - ] - }, - "useJdbc": { - "type": "boolean", - "description": "Générer les entités en mode JDBC", - "default": "false" - }, - "daosAbstract": { - "type": "boolean", - "description": " Génération d'interface Abstract avec @NoRepositoryBean permettant de mettre à jour le code généré", - "default": "false" - }, - "daosInterface": { - "type": "string", - "description": "Précise l'interface des Daos générés.", - "default": "false" - }, - "mappersInClass": { - "type": "boolean", - "description": "Indique s'il faut ajouter les mappers en tant méthode ou constructeur dans les classes qui les déclarent" - }, - "dataFlowsPath": { - "type": "string", - "description": "Localisation des flux de données générés." - }, - "dataFlowsBulkSize": { - "type": "number", - "description": "Taille des chunks à extraire et insérer" - }, - "dataFlowsListeners": { - "type": "array", - "description": "Listeners à ajouter à tous les dataflows", - "items": { - "type": "string", - "description": "Listener à ajouter à tous les dataflows" - } - }, - "dbSchema": { - "type": "string", - "description": "Nom du schéma sur lequel les entités sont sauvegardées" - }, - "enumShortcutMode": { - "type": "boolean", - "description": "Option pour générer des getters et setters vers l'enum des références plutôt que sur la table", - "default": "false" - }, - "associationAdders": { - "type": "boolean", - "description": "Option pour générer des méthodes d'ajouts pour les associations oneToMany et manyToMany. Ces méthodes permettent de synchroniser les objets ajoutés", - "default": "false" - }, - "associationRemovers": { - "type": "boolean", - "description": "Option pour générer des méthodes de suppression pour les associations oneToMany et manyToMany. Ces méthodes permettent de synchroniser les objets supprimés", - "default": "false" - }, - "generatedHint": { - "type": "boolean", - "description": "Option pour générer l'annotation @Generated('TopModel : https://github.com/klee-contrib/topmodel')", - "default": "true" - }, - "fieldsEnum": { - "type": "string", - "description": "Option pour générer une enum des champs des classes persistées", - "default": "None", - "enum": [ - "None", - "Persisted", - "Dto", - "Persisted_Dto" - ] - }, - "fieldsEnumInterface": { - "type": "string", - "description": "Précise l'interface des fields enum générés." - }, - "persistenceMode": { - "type": "string", - "description": "Mode de génération de la persistence ('Javax' ou 'Jakarta')", - "enum": [ - "javax", - "jakarta" - ] - }, - "identity": { - "type": "object", - "description": "Options de génération de la séquence", - "properties": { - "mode": { - "type": "string", - "description": "Mode de génération des séquences.", - "enum": [ - "none", - "sequence", - "identity" - ], - "default": "identity" - }, - "increment": { - "type": "number", - "description": "Incrément de la séquence générée." - }, - "start": { - "type": "number", - "description": "Début de la séquence générée." - } - } - } - } - } - }, - "sql": { - "type": "array", - "items": { - "type": "object", - "description": "Config pour la génération de SQL.", - "additionalProperties": false, - "required": [ - "outputDirectory", - "tags" - ], - "properties": { - "language": { - "type": "string", - "description": "Langage du générateur, utilisé pour choisir l'implémentation correspondante des domaines, décorateurs et convertisseurs. Par défaut : 'sql'." - }, - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "type": "string" - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "SsdtGen", - "ProceduralSqlGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "translateReferences": { - "type": "boolean", - "description": "Si les libellés des listes de références doivent être traduits.", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits.", - "default": "true" - }, - "resourcesTableName": { - "type": "string", - "description": "Nom de la table dans laquelle doivent être insérées les traductions." - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "targetDBMS": { - "type": "string", - "description": "SGBD cible ('postgre' ou 'sqlserver').", - "enum": [ - "sqlserver", - "postgre" - ] - }, - "procedural": { - "type": "object", - "description": "Config pour la génération de SQL 'procédurale'.", - "additionalProperties": false, - "properties": { - "crebasFile": { - "type": "string", - "description": "Emplacement du fichier de création de base." - }, - "uniqueKeysFile": { - "type": "string", - "description": "Emplacement du fichier de création des index uniques." - }, - "indexFKFile": { - "type": "string", - "description": "Emplacement du fichier de création des clés étrangères." - }, - "typeFile": { - "type": "string", - "description": "Emplacement du fichier de création des types." - }, - "commentFile": { - "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." - }, - "identity": { - "type": "object", - "description": "Options de génération de la séquence", - "properties": { - "mode": { - "type": "string", - "description": "Mode de génération des séquences.", - "enum": [ - "none", - "sequence", - "identity" - ], - "default": "identity" - }, - "increment": { - "type": "number", - "description": "Incrément de la séquence générée." - }, - "start": { - "type": "number", - "description": "Début de la séquence générée." - } - } - } - } - }, - "ssdt": { - "type": "object", - "description": "Config pour la génération SSDT", - "additionalProperties": false, - "properties": { - "tableScriptFolder": { - "type": "string", - "description": "Dossier du projet pour les scripts de déclaration de table." - }, - "tableTypeScriptFolder": { - "type": "string", - "description": " Dossier du projet pour les scripts de déclaration de type table." - }, - "initListScriptFolder": { - "type": "string", - "description": "Dossier du projet pour les scripts d'initialisation des listes de références." - }, - "initListMainScriptName": { - "type": "string", - "description": "Fichier du projet référençant les scripts d'initialisation des listes de références." - }, - "disableIdentity": { - "type": "boolean", - "description": "Désactive les colonnes d'identité." - } - } - } - } - } - }, - "translation": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": false, - "required": [ - "outputDirectory", - "tags" - ], - "properties": { - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "type": "string" - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "JTranslationOutGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "translateReferences": { - "type": "boolean", - "description": "Si les libellés des listes de références doivent être traduits.", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits.", - "default": "true" - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "rootPath": { - "type": "string", - "description": "Template du chemin des dossiers de traductions sortants (manquants). Doit contenir le template {lang}", - "default": "{lang}" - }, - "defaultLang": { - "type": "string", - "description": "Langue par défaut (celle dans laquelle sont écris les labels dans les fichiers .tmd" - }, - "langs": { - "type": "array", - "items": { - "type": "string", - "description": "Code du angage" - } - } - } - } } }, "additionalProperties": false diff --git a/samples/generators/jpa/topmodel.config b/samples/generators/jpa/topmodel.config index c615c516..6a02b809 100644 --- a/samples/generators/jpa/topmodel.config +++ b/samples/generators/jpa/topmodel.config @@ -3,6 +3,8 @@ app: topmodel.jpa.sample.demo modelRoot: ../../model lockFileName: jpa.topmodel.lock +generators: + - ../../../TopModel.Generator.Jpa i18n: rootPath: "{lang}" jpa: diff --git a/samples/generators/jpa/topmodel.config.schema.json b/samples/generators/jpa/topmodel.config.schema.json index 7dcf64b3..a98480cc 100644 --- a/samples/generators/jpa/topmodel.config.schema.json +++ b/samples/generators/jpa/topmodel.config.schema.json @@ -89,428 +89,6 @@ "type": "string" } }, - "csharp": { - "type": "array", - "items": { - "type": "object", - "description": "Config pour la génération de C#.", - "additionalProperties": false, - "required": [ - "outputDirectory", - "tags" - ], - "properties": { - "language": { - "type": "string", - "description": "Langage du générateur, utilisé pour choisir l'implémentation correspondante des domaines, décorateurs et convertisseurs. Par défaut : 'csharp'." - }, - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "boolean" - } - ] - } - } - }, - "tagVariables": { - "type": "object", - "description": "Définitions de variables par tag à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".*": { - "type": "object", - "patternProperties": { - ".*": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "boolean" - } - ] - } - } - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "CSharpClassGen", - "CSharpMapperGen", - "CSharpDbContextGen", - "CSharpRefAccessGen", - "CSharpApiServerGen", - "CSharpApiClientGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "translateReferences": { - "type": "boolean", - "description": "Si les libellés des listes de références doivent être traduits.", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits.", - "default": "true" - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "persistentModelPath": { - "type": "string", - "description": "Localisation du modèle persisté, relative au répertoire de génération. Par défaut : {app}.{module}.Models." - }, - "referencesModelPath": { - "type": "string", - "description": "Localisation des classes de références, relative au répertoire de génération. Si non renseigné, ces classes seront générées comme les autres (selon si elles sont persistantes ou non)." - }, - "nonPersistentModelPath": { - "type": "string", - "description": "Localisation du modèle non persisté, relative au répertoire de génération. Par défaut : {app}.{module}.Models/Dto." - }, - "apiRootPath": { - "type": "string", - "description": "Localisation du l'API générée (client ou serveur), relative au répertoire de génération. Par défaut : {app}.Web." - }, - "apiFilePath": { - "type": "string", - "description": "Chemin vers lequel sont créés les fichiers d'endpoints générés, relative à la racine de l'API. Par défaut : {module}." - }, - "apiGeneration": { - "oneOf": [ - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "enum": [ - "Client", - "Server" - ] - }, - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "dataFlowsPath": { - "type": "string", - "description": "Localisation des flux de données générés." - }, - "useEFMigrations": { - "type": "boolean", - "description": "Utilise les migrations EF pour créer/mettre à jour la base de données. Par défaut : 'true'." - }, - "dbContextPath": { - "type": "string", - "description": "Localisation du DbContext, relative au répertoire de génération." - }, - "dbContextName": { - "type": "string", - "description": "Nom du DbContext. Par défaut : {app}DbContext." - }, - "referenceAccessorsInterfacePath": { - "type": "string", - "description": "Chemin vers lequel générer les interfaces d'accesseurs de référence. Par défaut : {DbContextPath}/Reference." - }, - "referenceAccessorsImplementationPath": { - "type": "string", - "description": "Chemin vers lequel générer les implémentation d'accesseurs de référence. Par défaut : {DbContextPath}/Reference." - }, - "referenceAccessorsName": { - "type": "string", - "description": "Nom des accesseurs de référence (préfixé par 'I' pour l'interface). Par défaut : {module}ReferenceAccessors." - }, - "noAsyncControllers": { - "type": "boolean", - "description": "Génère des contrôleurs d'API synchrones." - }, - "useLowerCaseSqlNames": { - "type": "boolean", - "description": "Utilise des noms de tables et de colonnes en lowercase. Par défaut : 'true'." - }, - "dbSchema": { - "type": "string", - "description": "Le nom du schéma de base de données à cibler (si non renseigné, EF utilise 'dbo')." - }, - "kinetix": { - "type": "boolean", - "description": "Si on génère avec Kinetix." - }, - "domainNamespace": { - "type": "string", - "description": "Namespace de l'enum de domaine pour Kinetix. Par défaut : '{app}.Common'." - }, - "valueTypes": { - "type": "array", - "description": "Types C# que le générateur doit considérer comme étant types valeurs (en plus des plus standard comme 'int', 'bool' ou 'DateTime'), qu'il faudra wrapper dans un `Nullable` (avec un `?`) pour les rendre nullables.", - "items": { - "type": "string" - } - }, - "nullableEnable": { - "type": "boolean", - "description": "Prend en compte l'activation du paramètre `nullable: enable` dans le code généré (pour ajouter des `?` derrière les types références nullables)." - }, - "requiredNonNullable": { - "oneOf": [ - { - "type": "boolean", - "description": "Génère des types non-nullables pour les propriétés obligatoires." - }, - { - "type": "string", - "description": "Génère des types non-nullables pour les propriétés obligatoires.", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "noColumnOnAlias": { - "type": "boolean", - "description": "Ne génère pas les attributs de colonnes sur les alias dans les classes non persistées. Par défaut : 'true'." - }, - "noPersistence": { - "oneOf": [ - { - "type": "boolean", - "description": "Considère tous les classes comme étant non-persistantes (= pas d'attribut SQL)." - }, - { - "type": "string", - "description": "Considère tous les classes comme étant non-persistantes (= pas d'attribut SQL).", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "mapperTagsOverrides": { - "type": "array", - "description": "Si un mapper contient au moins une classe de ces tags, alors il sera généré avec les tags de cette classe (au lieu du comportement par défaut qui priorise les tags de la classe persistée puis de celle qui définit le mapper).", - "items": { - "type": "string" - } - }, - "mapperLocationPriority": { - "type": "string", - "description": "Détermine le type de classe prioritaire pour déterminer la localisation des mappers générés (`persistent` ou `non-persistent`). Par défaut : 'persistent'", - "enum": [ - "persistent", - "non-persistent" - ] - }, - "enumsForStaticReferences": { - "type": "boolean", - "description": "Utilise des enums au lieu de strings pour les PKs de listes de référence statiques." - }, - "useEFComments": { - "type": "boolean", - "description": "Annote les tables et les colonnes générées par EF avec les commentaires du modèle (nécessite `UseEFMigrations`)." - }, - "useRecords": { - "type": [ - "string", - "boolean" - ], - "description": "Utilise des records (mutables) au lieu de classes pour la génération de classes.", - "enum": [ - true, - false, - "dtos-only" - ] - }, - "usePrimaryConstructors": { - "type": "boolean", - "description": "Utilise les constructeurs principaux pour la génération des classes avec dépendances (clients d'API, accesseurs de références)." - } - } - } - }, - "javascript": { - "type": "array", - "items": { - "type": "object", - "description": "Config pour la génération de Javascript.", - "additionalProperties": false, - "required": [ - "outputDirectory", - "tags" - ], - "properties": { - "language": { - "type": "string", - "description": "Langage du générateur, utilisé pour choisir l'implémentation correspondante des domaines, décorateurs et convertisseurs. Par défaut : 'ts'." - }, - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "type": "string" - } - } - }, - "tagVariables": { - "type": "object", - "description": "Définitions de variables par tag à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".*": { - "type": "object", - "patternProperties": { - ".*": { - "type": "string" - } - } - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "JSDefinitionGen", - "JSReferenceGen", - "JSNGApiClientGen", - "JSApiClientGen", - "JSResourceGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "modelRootPath": { - "type": "string", - "description": "Localisation du modèle, relative au répertoire de génération. Si non renseigné, aucun modèle ne sera généré." - }, - "resourceRootPath": { - "type": "string", - "description": "Localisation des ressources i18n, relative au répertoire de génération. Si non renseigné, aucun fichier ne sera généré" - }, - "apiClientRootPath": { - "type": "string", - "description": "Localisation des clients d'API, relative au répertoire de génération. Si non renseigné, aucun fichier ne sera généré." - }, - "apiClientFilePath": { - "type": "string", - "description": "Chemin vers lequel sont créés les fichiers d'endpoints générés, relatif à la racine de l'API. En mode Angular, la valeur par défaut est `{module}/{fileName}.service`", - "default": "{module}/{fileName}" - }, - "fetchPath": { - "type": "string", - "description": "Chemin ou import vers un 'fetch' personnalisé, relatif au répertoire de génération s'il commence par un '.'." - }, - "domainPath": { - "type": "string", - "description": "Chemin ou import vers le fichier 'domain', relatif au répertoire de génération s'il commence par un '.'.", - "default": "../domains" - }, - "apiMode": { - "type": "string", - "description": "Framework cible pour la génération.", - "default": "focus", - "enum": [ - "angular", - "angular_promise", - "vanilla", - "nuxt" - ] - }, - "entityMode": { - "type": "string", - "description": "Framework cible pour la génération.", - "default": "typed", - "enum": [ - "untyped", - "typed" - ] - }, - "extendedCompositions": { - "type": "boolean", - "description": "Génère `isRequired`, `label` (et `comment`) sur les compositions dans les entitées typées." - }, - "entityTypesPath": { - "type": "string", - "description": "Chemin d'import des type d'entités", - "default": "@focus4/stores" - }, - "resourceMode": { - "type": "string", - "description": "Mode de génération (JS, JSON ou JSON Schema).", - "enum": [ - "js", - "json" - ] - }, - "translateReferences": { - "type": "boolean", - "description": "Si les listes de référence doivent être traduites", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits", - "default": "true" - }, - "generateComments": { - "type": "boolean", - "description": "Ajoute les commentaires dans les entités JS générées." - }, - "generateMainResourceFiles": { - "type": "boolean", - "description": "Génère un fichier 'index.ts' qui importe et réexporte tous les fichiers de resources générés par langue. Uniquement compatible avec `resourceMode: js`." - }, - "referenceMode": { - "type": "string", - "description": "Mode de génération des listes de références (définitions ou valeurs).", - "enum": [ - "definition", - "values" - ], - "default": "definition" - } - } - } - }, "jpa": { "type": "array", "items": { @@ -776,242 +354,6 @@ } } } - }, - "sql": { - "type": "array", - "items": { - "type": "object", - "description": "Config pour la génération de SQL.", - "additionalProperties": false, - "required": [ - "outputDirectory", - "tags" - ], - "properties": { - "language": { - "type": "string", - "description": "Langage du générateur, utilisé pour choisir l'implémentation correspondante des domaines, décorateurs et convertisseurs. Par défaut : 'sql'." - }, - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "type": "string" - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "SsdtGen", - "ProceduralSqlGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "translateReferences": { - "type": "boolean", - "description": "Si les libellés des listes de références doivent être traduits.", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits.", - "default": "true" - }, - "resourcesTableName": { - "type": "string", - "description": "Nom de la table dans laquelle doivent être insérées les traductions." - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "targetDBMS": { - "type": "string", - "description": "SGBD cible ('postgre' ou 'sqlserver').", - "enum": [ - "sqlserver", - "postgre" - ] - }, - "procedural": { - "type": "object", - "description": "Config pour la génération de SQL 'procédurale'.", - "additionalProperties": false, - "properties": { - "crebasFile": { - "type": "string", - "description": "Emplacement du fichier de création de base." - }, - "uniqueKeysFile": { - "type": "string", - "description": "Emplacement du fichier de création des index uniques." - }, - "indexFKFile": { - "type": "string", - "description": "Emplacement du fichier de création des clés étrangères." - }, - "typeFile": { - "type": "string", - "description": "Emplacement du fichier de création des types." - }, - "commentFile": { - "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." - }, - "identity": { - "type": "object", - "description": "Options de génération de la séquence", - "properties": { - "mode": { - "type": "string", - "description": "Mode de génération des séquences.", - "enum": [ - "none", - "sequence", - "identity" - ], - "default": "identity" - }, - "increment": { - "type": "number", - "description": "Incrément de la séquence générée." - }, - "start": { - "type": "number", - "description": "Début de la séquence générée." - } - } - } - } - }, - "ssdt": { - "type": "object", - "description": "Config pour la génération SSDT", - "additionalProperties": false, - "properties": { - "tableScriptFolder": { - "type": "string", - "description": "Dossier du projet pour les scripts de déclaration de table." - }, - "tableTypeScriptFolder": { - "type": "string", - "description": " Dossier du projet pour les scripts de déclaration de type table." - }, - "initListScriptFolder": { - "type": "string", - "description": "Dossier du projet pour les scripts d'initialisation des listes de références." - }, - "initListMainScriptName": { - "type": "string", - "description": "Fichier du projet référençant les scripts d'initialisation des listes de références." - }, - "disableIdentity": { - "type": "boolean", - "description": "Désactive les colonnes d'identité." - } - } - } - } - } - }, - "translation": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": false, - "required": [ - "outputDirectory", - "tags" - ], - "properties": { - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "type": "string" - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "JTranslationOutGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "translateReferences": { - "type": "boolean", - "description": "Si les libellés des listes de références doivent être traduits.", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits.", - "default": "true" - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "rootPath": { - "type": "string", - "description": "Template du chemin des dossiers de traductions sortants (manquants). Doit contenir le template {lang}", - "default": "{lang}" - }, - "defaultLang": { - "type": "string", - "description": "Langue par défaut (celle dans laquelle sont écris les labels dans les fichiers .tmd" - }, - "langs": { - "type": "array", - "items": { - "type": "string", - "description": "Code du angage" - } - } - } - } } }, "additionalProperties": false diff --git a/samples/generators/open-api/topmodel.config.schema.json b/samples/generators/open-api/topmodel.config.schema.json index 7dcf64b3..84914526 100644 --- a/samples/generators/open-api/topmodel.config.schema.json +++ b/samples/generators/open-api/topmodel.config.schema.json @@ -88,930 +88,6 @@ "items": { "type": "string" } - }, - "csharp": { - "type": "array", - "items": { - "type": "object", - "description": "Config pour la génération de C#.", - "additionalProperties": false, - "required": [ - "outputDirectory", - "tags" - ], - "properties": { - "language": { - "type": "string", - "description": "Langage du générateur, utilisé pour choisir l'implémentation correspondante des domaines, décorateurs et convertisseurs. Par défaut : 'csharp'." - }, - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "boolean" - } - ] - } - } - }, - "tagVariables": { - "type": "object", - "description": "Définitions de variables par tag à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".*": { - "type": "object", - "patternProperties": { - ".*": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "boolean" - } - ] - } - } - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "CSharpClassGen", - "CSharpMapperGen", - "CSharpDbContextGen", - "CSharpRefAccessGen", - "CSharpApiServerGen", - "CSharpApiClientGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "translateReferences": { - "type": "boolean", - "description": "Si les libellés des listes de références doivent être traduits.", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits.", - "default": "true" - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "persistentModelPath": { - "type": "string", - "description": "Localisation du modèle persisté, relative au répertoire de génération. Par défaut : {app}.{module}.Models." - }, - "referencesModelPath": { - "type": "string", - "description": "Localisation des classes de références, relative au répertoire de génération. Si non renseigné, ces classes seront générées comme les autres (selon si elles sont persistantes ou non)." - }, - "nonPersistentModelPath": { - "type": "string", - "description": "Localisation du modèle non persisté, relative au répertoire de génération. Par défaut : {app}.{module}.Models/Dto." - }, - "apiRootPath": { - "type": "string", - "description": "Localisation du l'API générée (client ou serveur), relative au répertoire de génération. Par défaut : {app}.Web." - }, - "apiFilePath": { - "type": "string", - "description": "Chemin vers lequel sont créés les fichiers d'endpoints générés, relative à la racine de l'API. Par défaut : {module}." - }, - "apiGeneration": { - "oneOf": [ - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "enum": [ - "Client", - "Server" - ] - }, - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "dataFlowsPath": { - "type": "string", - "description": "Localisation des flux de données générés." - }, - "useEFMigrations": { - "type": "boolean", - "description": "Utilise les migrations EF pour créer/mettre à jour la base de données. Par défaut : 'true'." - }, - "dbContextPath": { - "type": "string", - "description": "Localisation du DbContext, relative au répertoire de génération." - }, - "dbContextName": { - "type": "string", - "description": "Nom du DbContext. Par défaut : {app}DbContext." - }, - "referenceAccessorsInterfacePath": { - "type": "string", - "description": "Chemin vers lequel générer les interfaces d'accesseurs de référence. Par défaut : {DbContextPath}/Reference." - }, - "referenceAccessorsImplementationPath": { - "type": "string", - "description": "Chemin vers lequel générer les implémentation d'accesseurs de référence. Par défaut : {DbContextPath}/Reference." - }, - "referenceAccessorsName": { - "type": "string", - "description": "Nom des accesseurs de référence (préfixé par 'I' pour l'interface). Par défaut : {module}ReferenceAccessors." - }, - "noAsyncControllers": { - "type": "boolean", - "description": "Génère des contrôleurs d'API synchrones." - }, - "useLowerCaseSqlNames": { - "type": "boolean", - "description": "Utilise des noms de tables et de colonnes en lowercase. Par défaut : 'true'." - }, - "dbSchema": { - "type": "string", - "description": "Le nom du schéma de base de données à cibler (si non renseigné, EF utilise 'dbo')." - }, - "kinetix": { - "type": "boolean", - "description": "Si on génère avec Kinetix." - }, - "domainNamespace": { - "type": "string", - "description": "Namespace de l'enum de domaine pour Kinetix. Par défaut : '{app}.Common'." - }, - "valueTypes": { - "type": "array", - "description": "Types C# que le générateur doit considérer comme étant types valeurs (en plus des plus standard comme 'int', 'bool' ou 'DateTime'), qu'il faudra wrapper dans un `Nullable` (avec un `?`) pour les rendre nullables.", - "items": { - "type": "string" - } - }, - "nullableEnable": { - "type": "boolean", - "description": "Prend en compte l'activation du paramètre `nullable: enable` dans le code généré (pour ajouter des `?` derrière les types références nullables)." - }, - "requiredNonNullable": { - "oneOf": [ - { - "type": "boolean", - "description": "Génère des types non-nullables pour les propriétés obligatoires." - }, - { - "type": "string", - "description": "Génère des types non-nullables pour les propriétés obligatoires.", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "noColumnOnAlias": { - "type": "boolean", - "description": "Ne génère pas les attributs de colonnes sur les alias dans les classes non persistées. Par défaut : 'true'." - }, - "noPersistence": { - "oneOf": [ - { - "type": "boolean", - "description": "Considère tous les classes comme étant non-persistantes (= pas d'attribut SQL)." - }, - { - "type": "string", - "description": "Considère tous les classes comme étant non-persistantes (= pas d'attribut SQL).", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "mapperTagsOverrides": { - "type": "array", - "description": "Si un mapper contient au moins une classe de ces tags, alors il sera généré avec les tags de cette classe (au lieu du comportement par défaut qui priorise les tags de la classe persistée puis de celle qui définit le mapper).", - "items": { - "type": "string" - } - }, - "mapperLocationPriority": { - "type": "string", - "description": "Détermine le type de classe prioritaire pour déterminer la localisation des mappers générés (`persistent` ou `non-persistent`). Par défaut : 'persistent'", - "enum": [ - "persistent", - "non-persistent" - ] - }, - "enumsForStaticReferences": { - "type": "boolean", - "description": "Utilise des enums au lieu de strings pour les PKs de listes de référence statiques." - }, - "useEFComments": { - "type": "boolean", - "description": "Annote les tables et les colonnes générées par EF avec les commentaires du modèle (nécessite `UseEFMigrations`)." - }, - "useRecords": { - "type": [ - "string", - "boolean" - ], - "description": "Utilise des records (mutables) au lieu de classes pour la génération de classes.", - "enum": [ - true, - false, - "dtos-only" - ] - }, - "usePrimaryConstructors": { - "type": "boolean", - "description": "Utilise les constructeurs principaux pour la génération des classes avec dépendances (clients d'API, accesseurs de références)." - } - } - } - }, - "javascript": { - "type": "array", - "items": { - "type": "object", - "description": "Config pour la génération de Javascript.", - "additionalProperties": false, - "required": [ - "outputDirectory", - "tags" - ], - "properties": { - "language": { - "type": "string", - "description": "Langage du générateur, utilisé pour choisir l'implémentation correspondante des domaines, décorateurs et convertisseurs. Par défaut : 'ts'." - }, - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "type": "string" - } - } - }, - "tagVariables": { - "type": "object", - "description": "Définitions de variables par tag à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".*": { - "type": "object", - "patternProperties": { - ".*": { - "type": "string" - } - } - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "JSDefinitionGen", - "JSReferenceGen", - "JSNGApiClientGen", - "JSApiClientGen", - "JSResourceGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "modelRootPath": { - "type": "string", - "description": "Localisation du modèle, relative au répertoire de génération. Si non renseigné, aucun modèle ne sera généré." - }, - "resourceRootPath": { - "type": "string", - "description": "Localisation des ressources i18n, relative au répertoire de génération. Si non renseigné, aucun fichier ne sera généré" - }, - "apiClientRootPath": { - "type": "string", - "description": "Localisation des clients d'API, relative au répertoire de génération. Si non renseigné, aucun fichier ne sera généré." - }, - "apiClientFilePath": { - "type": "string", - "description": "Chemin vers lequel sont créés les fichiers d'endpoints générés, relatif à la racine de l'API. En mode Angular, la valeur par défaut est `{module}/{fileName}.service`", - "default": "{module}/{fileName}" - }, - "fetchPath": { - "type": "string", - "description": "Chemin ou import vers un 'fetch' personnalisé, relatif au répertoire de génération s'il commence par un '.'." - }, - "domainPath": { - "type": "string", - "description": "Chemin ou import vers le fichier 'domain', relatif au répertoire de génération s'il commence par un '.'.", - "default": "../domains" - }, - "apiMode": { - "type": "string", - "description": "Framework cible pour la génération.", - "default": "focus", - "enum": [ - "angular", - "angular_promise", - "vanilla", - "nuxt" - ] - }, - "entityMode": { - "type": "string", - "description": "Framework cible pour la génération.", - "default": "typed", - "enum": [ - "untyped", - "typed" - ] - }, - "extendedCompositions": { - "type": "boolean", - "description": "Génère `isRequired`, `label` (et `comment`) sur les compositions dans les entitées typées." - }, - "entityTypesPath": { - "type": "string", - "description": "Chemin d'import des type d'entités", - "default": "@focus4/stores" - }, - "resourceMode": { - "type": "string", - "description": "Mode de génération (JS, JSON ou JSON Schema).", - "enum": [ - "js", - "json" - ] - }, - "translateReferences": { - "type": "boolean", - "description": "Si les listes de référence doivent être traduites", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits", - "default": "true" - }, - "generateComments": { - "type": "boolean", - "description": "Ajoute les commentaires dans les entités JS générées." - }, - "generateMainResourceFiles": { - "type": "boolean", - "description": "Génère un fichier 'index.ts' qui importe et réexporte tous les fichiers de resources générés par langue. Uniquement compatible avec `resourceMode: js`." - }, - "referenceMode": { - "type": "string", - "description": "Mode de génération des listes de références (définitions ou valeurs).", - "enum": [ - "definition", - "values" - ], - "default": "definition" - } - } - } - }, - "jpa": { - "type": "array", - "items": { - "type": "object", - "description": "Config pour la génération de Jpa.", - "additionalProperties": false, - "required": [ - "tags", - "outputDirectory" - ], - "properties": { - "language": { - "type": "string", - "description": "Langage du générateur, utilisé pour choisir l'implémentation correspondante des domaines, décorateurs et convertisseurs. Par défaut : 'java'." - }, - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "type": "string" - } - } - }, - "tagVariables": { - "type": "object", - "description": "Définitions de variables par tag à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".*": { - "type": "object", - "patternProperties": { - ".*": { - "type": "string" - } - } - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "JpaModelGen", - "JpaInterfaceGen", - "JpaMapperGenerator", - "JpaDaoGen", - "JpaEnumGenerator", - "JpaResourceGen", - "SpringApiServerGen", - "SpringApiClientGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "translateReferences": { - "type": "boolean", - "description": "Si les libellés des listes de références doivent être traduits.", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits.", - "default": "true" - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "entitiesPath": { - "type": "string", - "description": "Localisation des classes persistées du modèle, relative au répertoire de génération. Par défaut, 'javagen:{app}/entities/{module}'." - }, - "daosPath": { - "type": "string", - "description": "Localisation des DAOs, relative au répertoire de génération." - }, - "dtosPath": { - "type": "string", - "description": "Localisation des classes non persistées du modèle, relative au répertoire de génération. Par défaut, 'javagen:{app}/dtos/{module}'." - }, - "enumsPath": { - "type": "string", - "description": "Localisation des enums du modèle, relative au répertoire de génération.", - "default": "javagen:{app}/enums/{module}" - }, - "apiPath": { - "type": "string", - "description": "Localisation du l'API générée (client ou serveur), relative au répertoire de génération. Par défaut, 'javagen:{app}/api/{module}'.", - "default": "javagen:{app}/api/{module}" - }, - "compositionConverterCanonicalName": { - "type": "string", - "description": "Nom complet de la classe permettant de convertir les compositions stockées en json dans la bdd. Supporte le template {package} et {class}", - "default": "{package}.{class}Converter" - }, - "apiGeneration": { - "oneOf": [ - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "enum": [ - "Client", - "Server" - ] - }, - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "clientApiGeneration": { - "oneOf": [ - { - "type": "string", - "description": "Mode de génération de l'API Client ('Client' ou 'Server')", - "default": "RestClient", - "enum": [ - "RestTemplate", - "RestClient" - ] - }, - { - "type": "string", - "description": "Mode de génération de l'API ('RestTemplate' ou 'RestClient')", - "default": "RestClient", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "resourcesPath": { - "type": "string", - "description": "Localisation des ressources, relative au répertoire de génération." - }, - "resourcesEncoding": { - "type": "string", - "description": "Encodage des fichiers de resource.", - "default": "Latin1", - "enum": [ - "Latin1", - "UTF8" - ] - }, - "useJdbc": { - "type": "boolean", - "description": "Générer les entités en mode JDBC", - "default": "false" - }, - "daosAbstract": { - "type": "boolean", - "description": " Génération d'interface Abstract avec @NoRepositoryBean permettant de mettre à jour le code généré", - "default": "false" - }, - "daosInterface": { - "type": "string", - "description": "Précise l'interface des Daos générés.", - "default": "false" - }, - "mappersInClass": { - "type": "boolean", - "description": "Indique s'il faut ajouter les mappers en tant méthode ou constructeur dans les classes qui les déclarent" - }, - "dataFlowsPath": { - "type": "string", - "description": "Localisation des flux de données générés." - }, - "dataFlowsBulkSize": { - "type": "number", - "description": "Taille des chunks à extraire et insérer" - }, - "dataFlowsListeners": { - "type": "array", - "description": "Listeners à ajouter à tous les dataflows", - "items": { - "type": "string", - "description": "Listener à ajouter à tous les dataflows" - } - }, - "dbSchema": { - "type": "string", - "description": "Nom du schéma sur lequel les entités sont sauvegardées" - }, - "enumShortcutMode": { - "type": "boolean", - "description": "Option pour générer des getters et setters vers l'enum des références plutôt que sur la table", - "default": "false" - }, - "associationAdders": { - "type": "boolean", - "description": "Option pour générer des méthodes d'ajouts pour les associations oneToMany et manyToMany. Ces méthodes permettent de synchroniser les objets ajoutés", - "default": "false" - }, - "associationRemovers": { - "type": "boolean", - "description": "Option pour générer des méthodes de suppression pour les associations oneToMany et manyToMany. Ces méthodes permettent de synchroniser les objets supprimés", - "default": "false" - }, - "generatedHint": { - "type": "boolean", - "description": "Option pour générer l'annotation @Generated('TopModel : https://github.com/klee-contrib/topmodel')", - "default": "true" - }, - "fieldsEnum": { - "type": "string", - "description": "Option pour générer une enum des champs des classes persistées", - "default": "None", - "enum": [ - "None", - "Persisted", - "Dto", - "Persisted_Dto" - ] - }, - "fieldsEnumInterface": { - "type": "string", - "description": "Précise l'interface des fields enum générés." - }, - "persistenceMode": { - "type": "string", - "description": "Mode de génération de la persistence ('Javax' ou 'Jakarta')", - "enum": [ - "javax", - "jakarta" - ] - }, - "identity": { - "type": "object", - "description": "Options de génération de la séquence", - "properties": { - "mode": { - "type": "string", - "description": "Mode de génération des séquences.", - "enum": [ - "none", - "sequence", - "identity" - ], - "default": "identity" - }, - "increment": { - "type": "number", - "description": "Incrément de la séquence générée." - }, - "start": { - "type": "number", - "description": "Début de la séquence générée." - } - } - } - } - } - }, - "sql": { - "type": "array", - "items": { - "type": "object", - "description": "Config pour la génération de SQL.", - "additionalProperties": false, - "required": [ - "outputDirectory", - "tags" - ], - "properties": { - "language": { - "type": "string", - "description": "Langage du générateur, utilisé pour choisir l'implémentation correspondante des domaines, décorateurs et convertisseurs. Par défaut : 'sql'." - }, - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "type": "string" - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "SsdtGen", - "ProceduralSqlGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "translateReferences": { - "type": "boolean", - "description": "Si les libellés des listes de références doivent être traduits.", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits.", - "default": "true" - }, - "resourcesTableName": { - "type": "string", - "description": "Nom de la table dans laquelle doivent être insérées les traductions." - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "targetDBMS": { - "type": "string", - "description": "SGBD cible ('postgre' ou 'sqlserver').", - "enum": [ - "sqlserver", - "postgre" - ] - }, - "procedural": { - "type": "object", - "description": "Config pour la génération de SQL 'procédurale'.", - "additionalProperties": false, - "properties": { - "crebasFile": { - "type": "string", - "description": "Emplacement du fichier de création de base." - }, - "uniqueKeysFile": { - "type": "string", - "description": "Emplacement du fichier de création des index uniques." - }, - "indexFKFile": { - "type": "string", - "description": "Emplacement du fichier de création des clés étrangères." - }, - "typeFile": { - "type": "string", - "description": "Emplacement du fichier de création des types." - }, - "commentFile": { - "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." - }, - "identity": { - "type": "object", - "description": "Options de génération de la séquence", - "properties": { - "mode": { - "type": "string", - "description": "Mode de génération des séquences.", - "enum": [ - "none", - "sequence", - "identity" - ], - "default": "identity" - }, - "increment": { - "type": "number", - "description": "Incrément de la séquence générée." - }, - "start": { - "type": "number", - "description": "Début de la séquence générée." - } - } - } - } - }, - "ssdt": { - "type": "object", - "description": "Config pour la génération SSDT", - "additionalProperties": false, - "properties": { - "tableScriptFolder": { - "type": "string", - "description": "Dossier du projet pour les scripts de déclaration de table." - }, - "tableTypeScriptFolder": { - "type": "string", - "description": " Dossier du projet pour les scripts de déclaration de type table." - }, - "initListScriptFolder": { - "type": "string", - "description": "Dossier du projet pour les scripts d'initialisation des listes de références." - }, - "initListMainScriptName": { - "type": "string", - "description": "Fichier du projet référençant les scripts d'initialisation des listes de références." - }, - "disableIdentity": { - "type": "boolean", - "description": "Désactive les colonnes d'identité." - } - } - } - } - } - }, - "translation": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": false, - "required": [ - "outputDirectory", - "tags" - ], - "properties": { - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "type": "string" - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "JTranslationOutGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "translateReferences": { - "type": "boolean", - "description": "Si les libellés des listes de références doivent être traduits.", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits.", - "default": "true" - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "rootPath": { - "type": "string", - "description": "Template du chemin des dossiers de traductions sortants (manquants). Doit contenir le template {lang}", - "default": "{lang}" - }, - "defaultLang": { - "type": "string", - "description": "Langue par défaut (celle dans laquelle sont écris les labels dans les fichiers .tmd" - }, - "langs": { - "type": "array", - "items": { - "type": "string", - "description": "Code du angage" - } - } - } - } } }, "additionalProperties": false diff --git a/samples/generators/pg/topmodel.config b/samples/generators/pg/topmodel.config index 6424b2b1..33d9866c 100644 --- a/samples/generators/pg/topmodel.config +++ b/samples/generators/pg/topmodel.config @@ -3,6 +3,8 @@ app: pg modelRoot: ../../model lockFileName: pg.topmodel.lock +generators: + - ../../../TopModel.Generator.Sql i18n: translateProperties: true translateReferences: true diff --git a/samples/generators/pg/topmodel.config.schema.json b/samples/generators/pg/topmodel.config.schema.json index 7dcf64b3..dcf1b5b5 100644 --- a/samples/generators/pg/topmodel.config.schema.json +++ b/samples/generators/pg/topmodel.config.schema.json @@ -89,694 +89,6 @@ "type": "string" } }, - "csharp": { - "type": "array", - "items": { - "type": "object", - "description": "Config pour la génération de C#.", - "additionalProperties": false, - "required": [ - "outputDirectory", - "tags" - ], - "properties": { - "language": { - "type": "string", - "description": "Langage du générateur, utilisé pour choisir l'implémentation correspondante des domaines, décorateurs et convertisseurs. Par défaut : 'csharp'." - }, - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "boolean" - } - ] - } - } - }, - "tagVariables": { - "type": "object", - "description": "Définitions de variables par tag à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".*": { - "type": "object", - "patternProperties": { - ".*": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "boolean" - } - ] - } - } - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "CSharpClassGen", - "CSharpMapperGen", - "CSharpDbContextGen", - "CSharpRefAccessGen", - "CSharpApiServerGen", - "CSharpApiClientGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "translateReferences": { - "type": "boolean", - "description": "Si les libellés des listes de références doivent être traduits.", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits.", - "default": "true" - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "persistentModelPath": { - "type": "string", - "description": "Localisation du modèle persisté, relative au répertoire de génération. Par défaut : {app}.{module}.Models." - }, - "referencesModelPath": { - "type": "string", - "description": "Localisation des classes de références, relative au répertoire de génération. Si non renseigné, ces classes seront générées comme les autres (selon si elles sont persistantes ou non)." - }, - "nonPersistentModelPath": { - "type": "string", - "description": "Localisation du modèle non persisté, relative au répertoire de génération. Par défaut : {app}.{module}.Models/Dto." - }, - "apiRootPath": { - "type": "string", - "description": "Localisation du l'API générée (client ou serveur), relative au répertoire de génération. Par défaut : {app}.Web." - }, - "apiFilePath": { - "type": "string", - "description": "Chemin vers lequel sont créés les fichiers d'endpoints générés, relative à la racine de l'API. Par défaut : {module}." - }, - "apiGeneration": { - "oneOf": [ - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "enum": [ - "Client", - "Server" - ] - }, - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "dataFlowsPath": { - "type": "string", - "description": "Localisation des flux de données générés." - }, - "useEFMigrations": { - "type": "boolean", - "description": "Utilise les migrations EF pour créer/mettre à jour la base de données. Par défaut : 'true'." - }, - "dbContextPath": { - "type": "string", - "description": "Localisation du DbContext, relative au répertoire de génération." - }, - "dbContextName": { - "type": "string", - "description": "Nom du DbContext. Par défaut : {app}DbContext." - }, - "referenceAccessorsInterfacePath": { - "type": "string", - "description": "Chemin vers lequel générer les interfaces d'accesseurs de référence. Par défaut : {DbContextPath}/Reference." - }, - "referenceAccessorsImplementationPath": { - "type": "string", - "description": "Chemin vers lequel générer les implémentation d'accesseurs de référence. Par défaut : {DbContextPath}/Reference." - }, - "referenceAccessorsName": { - "type": "string", - "description": "Nom des accesseurs de référence (préfixé par 'I' pour l'interface). Par défaut : {module}ReferenceAccessors." - }, - "noAsyncControllers": { - "type": "boolean", - "description": "Génère des contrôleurs d'API synchrones." - }, - "useLowerCaseSqlNames": { - "type": "boolean", - "description": "Utilise des noms de tables et de colonnes en lowercase. Par défaut : 'true'." - }, - "dbSchema": { - "type": "string", - "description": "Le nom du schéma de base de données à cibler (si non renseigné, EF utilise 'dbo')." - }, - "kinetix": { - "type": "boolean", - "description": "Si on génère avec Kinetix." - }, - "domainNamespace": { - "type": "string", - "description": "Namespace de l'enum de domaine pour Kinetix. Par défaut : '{app}.Common'." - }, - "valueTypes": { - "type": "array", - "description": "Types C# que le générateur doit considérer comme étant types valeurs (en plus des plus standard comme 'int', 'bool' ou 'DateTime'), qu'il faudra wrapper dans un `Nullable` (avec un `?`) pour les rendre nullables.", - "items": { - "type": "string" - } - }, - "nullableEnable": { - "type": "boolean", - "description": "Prend en compte l'activation du paramètre `nullable: enable` dans le code généré (pour ajouter des `?` derrière les types références nullables)." - }, - "requiredNonNullable": { - "oneOf": [ - { - "type": "boolean", - "description": "Génère des types non-nullables pour les propriétés obligatoires." - }, - { - "type": "string", - "description": "Génère des types non-nullables pour les propriétés obligatoires.", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "noColumnOnAlias": { - "type": "boolean", - "description": "Ne génère pas les attributs de colonnes sur les alias dans les classes non persistées. Par défaut : 'true'." - }, - "noPersistence": { - "oneOf": [ - { - "type": "boolean", - "description": "Considère tous les classes comme étant non-persistantes (= pas d'attribut SQL)." - }, - { - "type": "string", - "description": "Considère tous les classes comme étant non-persistantes (= pas d'attribut SQL).", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "mapperTagsOverrides": { - "type": "array", - "description": "Si un mapper contient au moins une classe de ces tags, alors il sera généré avec les tags de cette classe (au lieu du comportement par défaut qui priorise les tags de la classe persistée puis de celle qui définit le mapper).", - "items": { - "type": "string" - } - }, - "mapperLocationPriority": { - "type": "string", - "description": "Détermine le type de classe prioritaire pour déterminer la localisation des mappers générés (`persistent` ou `non-persistent`). Par défaut : 'persistent'", - "enum": [ - "persistent", - "non-persistent" - ] - }, - "enumsForStaticReferences": { - "type": "boolean", - "description": "Utilise des enums au lieu de strings pour les PKs de listes de référence statiques." - }, - "useEFComments": { - "type": "boolean", - "description": "Annote les tables et les colonnes générées par EF avec les commentaires du modèle (nécessite `UseEFMigrations`)." - }, - "useRecords": { - "type": [ - "string", - "boolean" - ], - "description": "Utilise des records (mutables) au lieu de classes pour la génération de classes.", - "enum": [ - true, - false, - "dtos-only" - ] - }, - "usePrimaryConstructors": { - "type": "boolean", - "description": "Utilise les constructeurs principaux pour la génération des classes avec dépendances (clients d'API, accesseurs de références)." - } - } - } - }, - "javascript": { - "type": "array", - "items": { - "type": "object", - "description": "Config pour la génération de Javascript.", - "additionalProperties": false, - "required": [ - "outputDirectory", - "tags" - ], - "properties": { - "language": { - "type": "string", - "description": "Langage du générateur, utilisé pour choisir l'implémentation correspondante des domaines, décorateurs et convertisseurs. Par défaut : 'ts'." - }, - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "type": "string" - } - } - }, - "tagVariables": { - "type": "object", - "description": "Définitions de variables par tag à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".*": { - "type": "object", - "patternProperties": { - ".*": { - "type": "string" - } - } - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "JSDefinitionGen", - "JSReferenceGen", - "JSNGApiClientGen", - "JSApiClientGen", - "JSResourceGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "modelRootPath": { - "type": "string", - "description": "Localisation du modèle, relative au répertoire de génération. Si non renseigné, aucun modèle ne sera généré." - }, - "resourceRootPath": { - "type": "string", - "description": "Localisation des ressources i18n, relative au répertoire de génération. Si non renseigné, aucun fichier ne sera généré" - }, - "apiClientRootPath": { - "type": "string", - "description": "Localisation des clients d'API, relative au répertoire de génération. Si non renseigné, aucun fichier ne sera généré." - }, - "apiClientFilePath": { - "type": "string", - "description": "Chemin vers lequel sont créés les fichiers d'endpoints générés, relatif à la racine de l'API. En mode Angular, la valeur par défaut est `{module}/{fileName}.service`", - "default": "{module}/{fileName}" - }, - "fetchPath": { - "type": "string", - "description": "Chemin ou import vers un 'fetch' personnalisé, relatif au répertoire de génération s'il commence par un '.'." - }, - "domainPath": { - "type": "string", - "description": "Chemin ou import vers le fichier 'domain', relatif au répertoire de génération s'il commence par un '.'.", - "default": "../domains" - }, - "apiMode": { - "type": "string", - "description": "Framework cible pour la génération.", - "default": "focus", - "enum": [ - "angular", - "angular_promise", - "vanilla", - "nuxt" - ] - }, - "entityMode": { - "type": "string", - "description": "Framework cible pour la génération.", - "default": "typed", - "enum": [ - "untyped", - "typed" - ] - }, - "extendedCompositions": { - "type": "boolean", - "description": "Génère `isRequired`, `label` (et `comment`) sur les compositions dans les entitées typées." - }, - "entityTypesPath": { - "type": "string", - "description": "Chemin d'import des type d'entités", - "default": "@focus4/stores" - }, - "resourceMode": { - "type": "string", - "description": "Mode de génération (JS, JSON ou JSON Schema).", - "enum": [ - "js", - "json" - ] - }, - "translateReferences": { - "type": "boolean", - "description": "Si les listes de référence doivent être traduites", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits", - "default": "true" - }, - "generateComments": { - "type": "boolean", - "description": "Ajoute les commentaires dans les entités JS générées." - }, - "generateMainResourceFiles": { - "type": "boolean", - "description": "Génère un fichier 'index.ts' qui importe et réexporte tous les fichiers de resources générés par langue. Uniquement compatible avec `resourceMode: js`." - }, - "referenceMode": { - "type": "string", - "description": "Mode de génération des listes de références (définitions ou valeurs).", - "enum": [ - "definition", - "values" - ], - "default": "definition" - } - } - } - }, - "jpa": { - "type": "array", - "items": { - "type": "object", - "description": "Config pour la génération de Jpa.", - "additionalProperties": false, - "required": [ - "tags", - "outputDirectory" - ], - "properties": { - "language": { - "type": "string", - "description": "Langage du générateur, utilisé pour choisir l'implémentation correspondante des domaines, décorateurs et convertisseurs. Par défaut : 'java'." - }, - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "type": "string" - } - } - }, - "tagVariables": { - "type": "object", - "description": "Définitions de variables par tag à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".*": { - "type": "object", - "patternProperties": { - ".*": { - "type": "string" - } - } - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "JpaModelGen", - "JpaInterfaceGen", - "JpaMapperGenerator", - "JpaDaoGen", - "JpaEnumGenerator", - "JpaResourceGen", - "SpringApiServerGen", - "SpringApiClientGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "translateReferences": { - "type": "boolean", - "description": "Si les libellés des listes de références doivent être traduits.", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits.", - "default": "true" - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "entitiesPath": { - "type": "string", - "description": "Localisation des classes persistées du modèle, relative au répertoire de génération. Par défaut, 'javagen:{app}/entities/{module}'." - }, - "daosPath": { - "type": "string", - "description": "Localisation des DAOs, relative au répertoire de génération." - }, - "dtosPath": { - "type": "string", - "description": "Localisation des classes non persistées du modèle, relative au répertoire de génération. Par défaut, 'javagen:{app}/dtos/{module}'." - }, - "enumsPath": { - "type": "string", - "description": "Localisation des enums du modèle, relative au répertoire de génération.", - "default": "javagen:{app}/enums/{module}" - }, - "apiPath": { - "type": "string", - "description": "Localisation du l'API générée (client ou serveur), relative au répertoire de génération. Par défaut, 'javagen:{app}/api/{module}'.", - "default": "javagen:{app}/api/{module}" - }, - "compositionConverterCanonicalName": { - "type": "string", - "description": "Nom complet de la classe permettant de convertir les compositions stockées en json dans la bdd. Supporte le template {package} et {class}", - "default": "{package}.{class}Converter" - }, - "apiGeneration": { - "oneOf": [ - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "enum": [ - "Client", - "Server" - ] - }, - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "clientApiGeneration": { - "oneOf": [ - { - "type": "string", - "description": "Mode de génération de l'API Client ('Client' ou 'Server')", - "default": "RestClient", - "enum": [ - "RestTemplate", - "RestClient" - ] - }, - { - "type": "string", - "description": "Mode de génération de l'API ('RestTemplate' ou 'RestClient')", - "default": "RestClient", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "resourcesPath": { - "type": "string", - "description": "Localisation des ressources, relative au répertoire de génération." - }, - "resourcesEncoding": { - "type": "string", - "description": "Encodage des fichiers de resource.", - "default": "Latin1", - "enum": [ - "Latin1", - "UTF8" - ] - }, - "useJdbc": { - "type": "boolean", - "description": "Générer les entités en mode JDBC", - "default": "false" - }, - "daosAbstract": { - "type": "boolean", - "description": " Génération d'interface Abstract avec @NoRepositoryBean permettant de mettre à jour le code généré", - "default": "false" - }, - "daosInterface": { - "type": "string", - "description": "Précise l'interface des Daos générés.", - "default": "false" - }, - "mappersInClass": { - "type": "boolean", - "description": "Indique s'il faut ajouter les mappers en tant méthode ou constructeur dans les classes qui les déclarent" - }, - "dataFlowsPath": { - "type": "string", - "description": "Localisation des flux de données générés." - }, - "dataFlowsBulkSize": { - "type": "number", - "description": "Taille des chunks à extraire et insérer" - }, - "dataFlowsListeners": { - "type": "array", - "description": "Listeners à ajouter à tous les dataflows", - "items": { - "type": "string", - "description": "Listener à ajouter à tous les dataflows" - } - }, - "dbSchema": { - "type": "string", - "description": "Nom du schéma sur lequel les entités sont sauvegardées" - }, - "enumShortcutMode": { - "type": "boolean", - "description": "Option pour générer des getters et setters vers l'enum des références plutôt que sur la table", - "default": "false" - }, - "associationAdders": { - "type": "boolean", - "description": "Option pour générer des méthodes d'ajouts pour les associations oneToMany et manyToMany. Ces méthodes permettent de synchroniser les objets ajoutés", - "default": "false" - }, - "associationRemovers": { - "type": "boolean", - "description": "Option pour générer des méthodes de suppression pour les associations oneToMany et manyToMany. Ces méthodes permettent de synchroniser les objets supprimés", - "default": "false" - }, - "generatedHint": { - "type": "boolean", - "description": "Option pour générer l'annotation @Generated('TopModel : https://github.com/klee-contrib/topmodel')", - "default": "true" - }, - "fieldsEnum": { - "type": "string", - "description": "Option pour générer une enum des champs des classes persistées", - "default": "None", - "enum": [ - "None", - "Persisted", - "Dto", - "Persisted_Dto" - ] - }, - "fieldsEnumInterface": { - "type": "string", - "description": "Précise l'interface des fields enum générés." - }, - "persistenceMode": { - "type": "string", - "description": "Mode de génération de la persistence ('Javax' ou 'Jakarta')", - "enum": [ - "javax", - "jakarta" - ] - }, - "identity": { - "type": "object", - "description": "Options de génération de la séquence", - "properties": { - "mode": { - "type": "string", - "description": "Mode de génération des séquences.", - "enum": [ - "none", - "sequence", - "identity" - ], - "default": "identity" - }, - "increment": { - "type": "number", - "description": "Incrément de la séquence générée." - }, - "start": { - "type": "number", - "description": "Début de la séquence générée." - } - } - } - } - } - }, "sql": { "type": "array", "items": { @@ -938,80 +250,6 @@ } } } - }, - "translation": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": false, - "required": [ - "outputDirectory", - "tags" - ], - "properties": { - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "type": "string" - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "JTranslationOutGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "translateReferences": { - "type": "boolean", - "description": "Si les libellés des listes de références doivent être traduits.", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits.", - "default": "true" - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "rootPath": { - "type": "string", - "description": "Template du chemin des dossiers de traductions sortants (manquants). Doit contenir le template {lang}", - "default": "{lang}" - }, - "defaultLang": { - "type": "string", - "description": "Langue par défaut (celle dans laquelle sont écris les labels dans les fichiers .tmd" - }, - "langs": { - "type": "array", - "items": { - "type": "string", - "description": "Code du angage" - } - } - } - } } }, "additionalProperties": false diff --git a/samples/generators/php/topmodel.config.schema.json b/samples/generators/php/topmodel.config.schema.json index 65953ee2..8abb64cc 100644 --- a/samples/generators/php/topmodel.config.schema.json +++ b/samples/generators/php/topmodel.config.schema.json @@ -89,930 +89,6 @@ "type": "string" } }, - "csharp": { - "type": "array", - "items": { - "type": "object", - "description": "Config pour la génération de C#.", - "additionalProperties": false, - "required": [ - "outputDirectory", - "tags" - ], - "properties": { - "language": { - "type": "string", - "description": "Langage du générateur, utilisé pour choisir l'implémentation correspondante des domaines, décorateurs et convertisseurs. Par défaut : 'csharp'." - }, - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "boolean" - } - ] - } - } - }, - "tagVariables": { - "type": "object", - "description": "Définitions de variables par tag à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".*": { - "type": "object", - "patternProperties": { - ".*": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "boolean" - } - ] - } - } - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "CSharpClassGen", - "CSharpMapperGen", - "CSharpDbContextGen", - "CSharpRefAccessGen", - "CSharpApiServerGen", - "CSharpApiClientGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "translateReferences": { - "type": "boolean", - "description": "Si les libellés des listes de références doivent être traduits.", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits.", - "default": "true" - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "persistentModelPath": { - "type": "string", - "description": "Localisation du modèle persisté, relative au répertoire de génération. Par défaut : {app}.{module}.Models." - }, - "referencesModelPath": { - "type": "string", - "description": "Localisation des classes de références, relative au répertoire de génération. Si non renseigné, ces classes seront générées comme les autres (selon si elles sont persistantes ou non)." - }, - "nonPersistentModelPath": { - "type": "string", - "description": "Localisation du modèle non persisté, relative au répertoire de génération. Par défaut : {app}.{module}.Models/Dto." - }, - "apiRootPath": { - "type": "string", - "description": "Localisation du l'API générée (client ou serveur), relative au répertoire de génération. Par défaut : {app}.Web." - }, - "apiFilePath": { - "type": "string", - "description": "Chemin vers lequel sont créés les fichiers d'endpoints générés, relative à la racine de l'API. Par défaut : {module}." - }, - "apiGeneration": { - "oneOf": [ - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "enum": [ - "Client", - "Server" - ] - }, - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "dataFlowsPath": { - "type": "string", - "description": "Localisation des flux de données générés." - }, - "useEFMigrations": { - "type": "boolean", - "description": "Utilise les migrations EF pour créer/mettre à jour la base de données. Par défaut : 'true'." - }, - "dbContextPath": { - "type": "string", - "description": "Localisation du DbContext, relative au répertoire de génération." - }, - "dbContextName": { - "type": "string", - "description": "Nom du DbContext. Par défaut : {app}DbContext." - }, - "referenceAccessorsInterfacePath": { - "type": "string", - "description": "Chemin vers lequel générer les interfaces d'accesseurs de référence. Par défaut : {DbContextPath}/Reference." - }, - "referenceAccessorsImplementationPath": { - "type": "string", - "description": "Chemin vers lequel générer les implémentation d'accesseurs de référence. Par défaut : {DbContextPath}/Reference." - }, - "referenceAccessorsName": { - "type": "string", - "description": "Nom des accesseurs de référence (préfixé par 'I' pour l'interface). Par défaut : {module}ReferenceAccessors." - }, - "noAsyncControllers": { - "type": "boolean", - "description": "Génère des contrôleurs d'API synchrones." - }, - "useLowerCaseSqlNames": { - "type": "boolean", - "description": "Utilise des noms de tables et de colonnes en lowercase. Par défaut : 'true'." - }, - "dbSchema": { - "type": "string", - "description": "Le nom du schéma de base de données à cibler (si non renseigné, EF utilise 'dbo')." - }, - "kinetix": { - "type": "boolean", - "description": "Si on génère avec Kinetix." - }, - "domainNamespace": { - "type": "string", - "description": "Namespace de l'enum de domaine pour Kinetix. Par défaut : '{app}.Common'." - }, - "valueTypes": { - "type": "array", - "description": "Types C# que le générateur doit considérer comme étant types valeurs (en plus des plus standard comme 'int', 'bool' ou 'DateTime'), qu'il faudra wrapper dans un `Nullable` (avec un `?`) pour les rendre nullables.", - "items": { - "type": "string" - } - }, - "nullableEnable": { - "type": "boolean", - "description": "Prend en compte l'activation du paramètre `nullable: enable` dans le code généré (pour ajouter des `?` derrière les types références nullables)." - }, - "requiredNonNullable": { - "oneOf": [ - { - "type": "boolean", - "description": "Génère des types non-nullables pour les propriétés obligatoires." - }, - { - "type": "string", - "description": "Génère des types non-nullables pour les propriétés obligatoires.", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "noColumnOnAlias": { - "type": "boolean", - "description": "Ne génère pas les attributs de colonnes sur les alias dans les classes non persistées. Par défaut : 'true'." - }, - "noPersistence": { - "oneOf": [ - { - "type": "boolean", - "description": "Considère tous les classes comme étant non-persistantes (= pas d'attribut SQL)." - }, - { - "type": "string", - "description": "Considère tous les classes comme étant non-persistantes (= pas d'attribut SQL).", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "mapperTagsOverrides": { - "type": "array", - "description": "Si un mapper contient au moins une classe de ces tags, alors il sera généré avec les tags de cette classe (au lieu du comportement par défaut qui priorise les tags de la classe persistée puis de celle qui définit le mapper).", - "items": { - "type": "string" - } - }, - "mapperLocationPriority": { - "type": "string", - "description": "Détermine le type de classe prioritaire pour déterminer la localisation des mappers générés (`persistent` ou `non-persistent`). Par défaut : 'persistent'", - "enum": [ - "persistent", - "non-persistent" - ] - }, - "enumsForStaticReferences": { - "type": "boolean", - "description": "Utilise des enums au lieu de strings pour les PKs de listes de référence statiques." - }, - "useEFComments": { - "type": "boolean", - "description": "Annote les tables et les colonnes générées par EF avec les commentaires du modèle (nécessite `UseEFMigrations`)." - }, - "useRecords": { - "type": [ - "string", - "boolean" - ], - "description": "Utilise des records (mutables) au lieu de classes pour la génération de classes.", - "enum": [ - true, - false, - "dtos-only" - ] - }, - "usePrimaryConstructors": { - "type": "boolean", - "description": "Utilise les constructeurs principaux pour la génération des classes avec dépendances (clients d'API, accesseurs de références)." - } - } - } - }, - "javascript": { - "type": "array", - "items": { - "type": "object", - "description": "Config pour la génération de Javascript.", - "additionalProperties": false, - "required": [ - "outputDirectory", - "tags" - ], - "properties": { - "language": { - "type": "string", - "description": "Langage du générateur, utilisé pour choisir l'implémentation correspondante des domaines, décorateurs et convertisseurs. Par défaut : 'ts'." - }, - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "type": "string" - } - } - }, - "tagVariables": { - "type": "object", - "description": "Définitions de variables par tag à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".*": { - "type": "object", - "patternProperties": { - ".*": { - "type": "string" - } - } - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "JSDefinitionGen", - "JSReferenceGen", - "JSNGApiClientGen", - "JSApiClientGen", - "JSResourceGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "modelRootPath": { - "type": "string", - "description": "Localisation du modèle, relative au répertoire de génération. Si non renseigné, aucun modèle ne sera généré." - }, - "resourceRootPath": { - "type": "string", - "description": "Localisation des ressources i18n, relative au répertoire de génération. Si non renseigné, aucun fichier ne sera généré" - }, - "apiClientRootPath": { - "type": "string", - "description": "Localisation des clients d'API, relative au répertoire de génération. Si non renseigné, aucun fichier ne sera généré." - }, - "apiClientFilePath": { - "type": "string", - "description": "Chemin vers lequel sont créés les fichiers d'endpoints générés, relatif à la racine de l'API. En mode Angular, la valeur par défaut est `{module}/{fileName}.service`", - "default": "{module}/{fileName}" - }, - "fetchPath": { - "type": "string", - "description": "Chemin ou import vers un 'fetch' personnalisé, relatif au répertoire de génération s'il commence par un '.'." - }, - "domainPath": { - "type": "string", - "description": "Chemin ou import vers le fichier 'domain', relatif au répertoire de génération s'il commence par un '.'.", - "default": "../domains" - }, - "apiMode": { - "type": "string", - "description": "Framework cible pour la génération.", - "default": "focus", - "enum": [ - "angular", - "angular_promise", - "vanilla", - "nuxt" - ] - }, - "entityMode": { - "type": "string", - "description": "Framework cible pour la génération.", - "default": "typed", - "enum": [ - "untyped", - "typed" - ] - }, - "extendedCompositions": { - "type": "boolean", - "description": "Génère `isRequired`, `label` (et `comment`) sur les compositions dans les entitées typées." - }, - "entityTypesPath": { - "type": "string", - "description": "Chemin d'import des type d'entités", - "default": "@focus4/stores" - }, - "resourceMode": { - "type": "string", - "description": "Mode de génération (JS, JSON ou JSON Schema).", - "enum": [ - "js", - "json" - ] - }, - "translateReferences": { - "type": "boolean", - "description": "Si les listes de référence doivent être traduites", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits", - "default": "true" - }, - "generateComments": { - "type": "boolean", - "description": "Ajoute les commentaires dans les entités JS générées." - }, - "generateMainResourceFiles": { - "type": "boolean", - "description": "Génère un fichier 'index.ts' qui importe et réexporte tous les fichiers de resources générés par langue. Uniquement compatible avec `resourceMode: js`." - }, - "referenceMode": { - "type": "string", - "description": "Mode de génération des listes de références (définitions ou valeurs).", - "enum": [ - "definition", - "values" - ], - "default": "definition" - } - } - } - }, - "jpa": { - "type": "array", - "items": { - "type": "object", - "description": "Config pour la génération de Jpa.", - "additionalProperties": false, - "required": [ - "tags", - "outputDirectory" - ], - "properties": { - "language": { - "type": "string", - "description": "Langage du générateur, utilisé pour choisir l'implémentation correspondante des domaines, décorateurs et convertisseurs. Par défaut : 'java'." - }, - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "type": "string" - } - } - }, - "tagVariables": { - "type": "object", - "description": "Définitions de variables par tag à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".*": { - "type": "object", - "patternProperties": { - ".*": { - "type": "string" - } - } - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "JpaModelGen", - "JpaInterfaceGen", - "JpaMapperGenerator", - "JpaDaoGen", - "JpaEnumGenerator", - "JpaResourceGen", - "SpringApiServerGen", - "SpringApiClientGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "translateReferences": { - "type": "boolean", - "description": "Si les libellés des listes de références doivent être traduits.", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits.", - "default": "true" - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "entitiesPath": { - "type": "string", - "description": "Localisation des classes persistées du modèle, relative au répertoire de génération. Par défaut, 'javagen:{app}/entities/{module}'." - }, - "daosPath": { - "type": "string", - "description": "Localisation des DAOs, relative au répertoire de génération." - }, - "dtosPath": { - "type": "string", - "description": "Localisation des classes non persistées du modèle, relative au répertoire de génération. Par défaut, 'javagen:{app}/dtos/{module}'." - }, - "enumsPath": { - "type": "string", - "description": "Localisation des enums du modèle, relative au répertoire de génération.", - "default": "javagen:{app}/enums/{module}" - }, - "apiPath": { - "type": "string", - "description": "Localisation du l'API générée (client ou serveur), relative au répertoire de génération. Par défaut, 'javagen:{app}/api/{module}'.", - "default": "javagen:{app}/api/{module}" - }, - "compositionConverterCanonicalName": { - "type": "string", - "description": "Nom complet de la classe permettant de convertir les compositions stockées en json dans la bdd. Supporte le template {package} et {class}", - "default": "{package}.{class}Converter" - }, - "apiGeneration": { - "oneOf": [ - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "enum": [ - "Client", - "Server" - ] - }, - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "clientApiGeneration": { - "oneOf": [ - { - "type": "string", - "description": "Mode de génération de l'API Client ('Client' ou 'Server')", - "default": "RestClient", - "enum": [ - "RestTemplate", - "RestClient" - ] - }, - { - "type": "string", - "description": "Mode de génération de l'API ('RestTemplate' ou 'RestClient')", - "default": "RestClient", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "resourcesPath": { - "type": "string", - "description": "Localisation des ressources, relative au répertoire de génération." - }, - "resourcesEncoding": { - "type": "string", - "description": "Encodage des fichiers de resource.", - "default": "Latin1", - "enum": [ - "Latin1", - "UTF8" - ] - }, - "useJdbc": { - "type": "boolean", - "description": "Générer les entités en mode JDBC", - "default": "false" - }, - "daosAbstract": { - "type": "boolean", - "description": " Génération d'interface Abstract avec @NoRepositoryBean permettant de mettre à jour le code généré", - "default": "false" - }, - "daosInterface": { - "type": "string", - "description": "Précise l'interface des Daos générés.", - "default": "false" - }, - "mappersInClass": { - "type": "boolean", - "description": "Indique s'il faut ajouter les mappers en tant méthode ou constructeur dans les classes qui les déclarent" - }, - "dataFlowsPath": { - "type": "string", - "description": "Localisation des flux de données générés." - }, - "dataFlowsBulkSize": { - "type": "number", - "description": "Taille des chunks à extraire et insérer" - }, - "dataFlowsListeners": { - "type": "array", - "description": "Listeners à ajouter à tous les dataflows", - "items": { - "type": "string", - "description": "Listener à ajouter à tous les dataflows" - } - }, - "dbSchema": { - "type": "string", - "description": "Nom du schéma sur lequel les entités sont sauvegardées" - }, - "enumShortcutMode": { - "type": "boolean", - "description": "Option pour générer des getters et setters vers l'enum des références plutôt que sur la table", - "default": "false" - }, - "associationAdders": { - "type": "boolean", - "description": "Option pour générer des méthodes d'ajouts pour les associations oneToMany et manyToMany. Ces méthodes permettent de synchroniser les objets ajoutés", - "default": "false" - }, - "associationRemovers": { - "type": "boolean", - "description": "Option pour générer des méthodes de suppression pour les associations oneToMany et manyToMany. Ces méthodes permettent de synchroniser les objets supprimés", - "default": "false" - }, - "generatedHint": { - "type": "boolean", - "description": "Option pour générer l'annotation @Generated('TopModel : https://github.com/klee-contrib/topmodel')", - "default": "true" - }, - "fieldsEnum": { - "type": "string", - "description": "Option pour générer une enum des champs des classes persistées", - "default": "None", - "enum": [ - "None", - "Persisted", - "Dto", - "Persisted_Dto" - ] - }, - "fieldsEnumInterface": { - "type": "string", - "description": "Précise l'interface des fields enum générés." - }, - "persistenceMode": { - "type": "string", - "description": "Mode de génération de la persistence ('Javax' ou 'Jakarta')", - "enum": [ - "javax", - "jakarta" - ] - }, - "identity": { - "type": "object", - "description": "Options de génération de la séquence", - "properties": { - "mode": { - "type": "string", - "description": "Mode de génération des séquences.", - "enum": [ - "none", - "sequence", - "identity" - ], - "default": "identity" - }, - "increment": { - "type": "number", - "description": "Incrément de la séquence générée." - }, - "start": { - "type": "number", - "description": "Début de la séquence générée." - } - } - } - } - } - }, - "sql": { - "type": "array", - "items": { - "type": "object", - "description": "Config pour la génération de SQL.", - "additionalProperties": false, - "required": [ - "outputDirectory", - "tags" - ], - "properties": { - "language": { - "type": "string", - "description": "Langage du générateur, utilisé pour choisir l'implémentation correspondante des domaines, décorateurs et convertisseurs. Par défaut : 'sql'." - }, - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "type": "string" - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "SsdtGen", - "ProceduralSqlGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "translateReferences": { - "type": "boolean", - "description": "Si les libellés des listes de références doivent être traduits.", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits.", - "default": "true" - }, - "resourcesTableName": { - "type": "string", - "description": "Nom de la table dans laquelle doivent être insérées les traductions." - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "targetDBMS": { - "type": "string", - "description": "SGBD cible ('postgre' ou 'sqlserver').", - "enum": [ - "sqlserver", - "postgre" - ] - }, - "procedural": { - "type": "object", - "description": "Config pour la génération de SQL 'procédurale'.", - "additionalProperties": false, - "properties": { - "crebasFile": { - "type": "string", - "description": "Emplacement du fichier de création de base." - }, - "uniqueKeysFile": { - "type": "string", - "description": "Emplacement du fichier de création des index uniques." - }, - "indexFKFile": { - "type": "string", - "description": "Emplacement du fichier de création des clés étrangères." - }, - "typeFile": { - "type": "string", - "description": "Emplacement du fichier de création des types." - }, - "commentFile": { - "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." - }, - "identity": { - "type": "object", - "description": "Options de génération de la séquence", - "properties": { - "mode": { - "type": "string", - "description": "Mode de génération des séquences.", - "enum": [ - "none", - "sequence", - "identity" - ], - "default": "identity" - }, - "increment": { - "type": "number", - "description": "Incrément de la séquence générée." - }, - "start": { - "type": "number", - "description": "Début de la séquence générée." - } - } - } - } - }, - "ssdt": { - "type": "object", - "description": "Config pour la génération SSDT", - "additionalProperties": false, - "properties": { - "tableScriptFolder": { - "type": "string", - "description": "Dossier du projet pour les scripts de déclaration de table." - }, - "tableTypeScriptFolder": { - "type": "string", - "description": " Dossier du projet pour les scripts de déclaration de type table." - }, - "initListScriptFolder": { - "type": "string", - "description": "Dossier du projet pour les scripts d'initialisation des listes de références." - }, - "initListMainScriptName": { - "type": "string", - "description": "Fichier du projet référençant les scripts d'initialisation des listes de références." - }, - "disableIdentity": { - "type": "boolean", - "description": "Désactive les colonnes d'identité." - } - } - } - } - } - }, - "translation": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": false, - "required": [ - "outputDirectory", - "tags" - ], - "properties": { - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "type": "string" - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "JTranslationOutGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "translateReferences": { - "type": "boolean", - "description": "Si les libellés des listes de références doivent être traduits.", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits.", - "default": "true" - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "rootPath": { - "type": "string", - "description": "Template du chemin des dossiers de traductions sortants (manquants). Doit contenir le template {lang}", - "default": "{lang}" - }, - "defaultLang": { - "type": "string", - "description": "Langue par défaut (celle dans laquelle sont écris les labels dans les fichiers .tmd" - }, - "langs": { - "type": "array", - "items": { - "type": "string", - "description": "Code du angage" - } - } - } - } - }, "php": { "type": "array", "items": { diff --git a/samples/generators/ssdt/topmodel.config b/samples/generators/ssdt/topmodel.config index 923b9384..f793172a 100644 --- a/samples/generators/ssdt/topmodel.config +++ b/samples/generators/ssdt/topmodel.config @@ -1,8 +1,10 @@ -# yaml-language-server: $schema=./topmodel.config.schema.json +# yaml-language-server: $schema=./topmodel.config.schema.json --- app: ssdt modelRoot: ../../model lockFileName: ssdt.topmodel.lock +generators: + - ../../../TopModel.Generator.Sql sql: - tags: - back diff --git a/samples/generators/ssdt/topmodel.config.schema.json b/samples/generators/ssdt/topmodel.config.schema.json index 7dcf64b3..dcf1b5b5 100644 --- a/samples/generators/ssdt/topmodel.config.schema.json +++ b/samples/generators/ssdt/topmodel.config.schema.json @@ -89,694 +89,6 @@ "type": "string" } }, - "csharp": { - "type": "array", - "items": { - "type": "object", - "description": "Config pour la génération de C#.", - "additionalProperties": false, - "required": [ - "outputDirectory", - "tags" - ], - "properties": { - "language": { - "type": "string", - "description": "Langage du générateur, utilisé pour choisir l'implémentation correspondante des domaines, décorateurs et convertisseurs. Par défaut : 'csharp'." - }, - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "boolean" - } - ] - } - } - }, - "tagVariables": { - "type": "object", - "description": "Définitions de variables par tag à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".*": { - "type": "object", - "patternProperties": { - ".*": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "boolean" - } - ] - } - } - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "CSharpClassGen", - "CSharpMapperGen", - "CSharpDbContextGen", - "CSharpRefAccessGen", - "CSharpApiServerGen", - "CSharpApiClientGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "translateReferences": { - "type": "boolean", - "description": "Si les libellés des listes de références doivent être traduits.", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits.", - "default": "true" - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "persistentModelPath": { - "type": "string", - "description": "Localisation du modèle persisté, relative au répertoire de génération. Par défaut : {app}.{module}.Models." - }, - "referencesModelPath": { - "type": "string", - "description": "Localisation des classes de références, relative au répertoire de génération. Si non renseigné, ces classes seront générées comme les autres (selon si elles sont persistantes ou non)." - }, - "nonPersistentModelPath": { - "type": "string", - "description": "Localisation du modèle non persisté, relative au répertoire de génération. Par défaut : {app}.{module}.Models/Dto." - }, - "apiRootPath": { - "type": "string", - "description": "Localisation du l'API générée (client ou serveur), relative au répertoire de génération. Par défaut : {app}.Web." - }, - "apiFilePath": { - "type": "string", - "description": "Chemin vers lequel sont créés les fichiers d'endpoints générés, relative à la racine de l'API. Par défaut : {module}." - }, - "apiGeneration": { - "oneOf": [ - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "enum": [ - "Client", - "Server" - ] - }, - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "dataFlowsPath": { - "type": "string", - "description": "Localisation des flux de données générés." - }, - "useEFMigrations": { - "type": "boolean", - "description": "Utilise les migrations EF pour créer/mettre à jour la base de données. Par défaut : 'true'." - }, - "dbContextPath": { - "type": "string", - "description": "Localisation du DbContext, relative au répertoire de génération." - }, - "dbContextName": { - "type": "string", - "description": "Nom du DbContext. Par défaut : {app}DbContext." - }, - "referenceAccessorsInterfacePath": { - "type": "string", - "description": "Chemin vers lequel générer les interfaces d'accesseurs de référence. Par défaut : {DbContextPath}/Reference." - }, - "referenceAccessorsImplementationPath": { - "type": "string", - "description": "Chemin vers lequel générer les implémentation d'accesseurs de référence. Par défaut : {DbContextPath}/Reference." - }, - "referenceAccessorsName": { - "type": "string", - "description": "Nom des accesseurs de référence (préfixé par 'I' pour l'interface). Par défaut : {module}ReferenceAccessors." - }, - "noAsyncControllers": { - "type": "boolean", - "description": "Génère des contrôleurs d'API synchrones." - }, - "useLowerCaseSqlNames": { - "type": "boolean", - "description": "Utilise des noms de tables et de colonnes en lowercase. Par défaut : 'true'." - }, - "dbSchema": { - "type": "string", - "description": "Le nom du schéma de base de données à cibler (si non renseigné, EF utilise 'dbo')." - }, - "kinetix": { - "type": "boolean", - "description": "Si on génère avec Kinetix." - }, - "domainNamespace": { - "type": "string", - "description": "Namespace de l'enum de domaine pour Kinetix. Par défaut : '{app}.Common'." - }, - "valueTypes": { - "type": "array", - "description": "Types C# que le générateur doit considérer comme étant types valeurs (en plus des plus standard comme 'int', 'bool' ou 'DateTime'), qu'il faudra wrapper dans un `Nullable` (avec un `?`) pour les rendre nullables.", - "items": { - "type": "string" - } - }, - "nullableEnable": { - "type": "boolean", - "description": "Prend en compte l'activation du paramètre `nullable: enable` dans le code généré (pour ajouter des `?` derrière les types références nullables)." - }, - "requiredNonNullable": { - "oneOf": [ - { - "type": "boolean", - "description": "Génère des types non-nullables pour les propriétés obligatoires." - }, - { - "type": "string", - "description": "Génère des types non-nullables pour les propriétés obligatoires.", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "noColumnOnAlias": { - "type": "boolean", - "description": "Ne génère pas les attributs de colonnes sur les alias dans les classes non persistées. Par défaut : 'true'." - }, - "noPersistence": { - "oneOf": [ - { - "type": "boolean", - "description": "Considère tous les classes comme étant non-persistantes (= pas d'attribut SQL)." - }, - { - "type": "string", - "description": "Considère tous les classes comme étant non-persistantes (= pas d'attribut SQL).", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "mapperTagsOverrides": { - "type": "array", - "description": "Si un mapper contient au moins une classe de ces tags, alors il sera généré avec les tags de cette classe (au lieu du comportement par défaut qui priorise les tags de la classe persistée puis de celle qui définit le mapper).", - "items": { - "type": "string" - } - }, - "mapperLocationPriority": { - "type": "string", - "description": "Détermine le type de classe prioritaire pour déterminer la localisation des mappers générés (`persistent` ou `non-persistent`). Par défaut : 'persistent'", - "enum": [ - "persistent", - "non-persistent" - ] - }, - "enumsForStaticReferences": { - "type": "boolean", - "description": "Utilise des enums au lieu de strings pour les PKs de listes de référence statiques." - }, - "useEFComments": { - "type": "boolean", - "description": "Annote les tables et les colonnes générées par EF avec les commentaires du modèle (nécessite `UseEFMigrations`)." - }, - "useRecords": { - "type": [ - "string", - "boolean" - ], - "description": "Utilise des records (mutables) au lieu de classes pour la génération de classes.", - "enum": [ - true, - false, - "dtos-only" - ] - }, - "usePrimaryConstructors": { - "type": "boolean", - "description": "Utilise les constructeurs principaux pour la génération des classes avec dépendances (clients d'API, accesseurs de références)." - } - } - } - }, - "javascript": { - "type": "array", - "items": { - "type": "object", - "description": "Config pour la génération de Javascript.", - "additionalProperties": false, - "required": [ - "outputDirectory", - "tags" - ], - "properties": { - "language": { - "type": "string", - "description": "Langage du générateur, utilisé pour choisir l'implémentation correspondante des domaines, décorateurs et convertisseurs. Par défaut : 'ts'." - }, - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "type": "string" - } - } - }, - "tagVariables": { - "type": "object", - "description": "Définitions de variables par tag à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".*": { - "type": "object", - "patternProperties": { - ".*": { - "type": "string" - } - } - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "JSDefinitionGen", - "JSReferenceGen", - "JSNGApiClientGen", - "JSApiClientGen", - "JSResourceGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "modelRootPath": { - "type": "string", - "description": "Localisation du modèle, relative au répertoire de génération. Si non renseigné, aucun modèle ne sera généré." - }, - "resourceRootPath": { - "type": "string", - "description": "Localisation des ressources i18n, relative au répertoire de génération. Si non renseigné, aucun fichier ne sera généré" - }, - "apiClientRootPath": { - "type": "string", - "description": "Localisation des clients d'API, relative au répertoire de génération. Si non renseigné, aucun fichier ne sera généré." - }, - "apiClientFilePath": { - "type": "string", - "description": "Chemin vers lequel sont créés les fichiers d'endpoints générés, relatif à la racine de l'API. En mode Angular, la valeur par défaut est `{module}/{fileName}.service`", - "default": "{module}/{fileName}" - }, - "fetchPath": { - "type": "string", - "description": "Chemin ou import vers un 'fetch' personnalisé, relatif au répertoire de génération s'il commence par un '.'." - }, - "domainPath": { - "type": "string", - "description": "Chemin ou import vers le fichier 'domain', relatif au répertoire de génération s'il commence par un '.'.", - "default": "../domains" - }, - "apiMode": { - "type": "string", - "description": "Framework cible pour la génération.", - "default": "focus", - "enum": [ - "angular", - "angular_promise", - "vanilla", - "nuxt" - ] - }, - "entityMode": { - "type": "string", - "description": "Framework cible pour la génération.", - "default": "typed", - "enum": [ - "untyped", - "typed" - ] - }, - "extendedCompositions": { - "type": "boolean", - "description": "Génère `isRequired`, `label` (et `comment`) sur les compositions dans les entitées typées." - }, - "entityTypesPath": { - "type": "string", - "description": "Chemin d'import des type d'entités", - "default": "@focus4/stores" - }, - "resourceMode": { - "type": "string", - "description": "Mode de génération (JS, JSON ou JSON Schema).", - "enum": [ - "js", - "json" - ] - }, - "translateReferences": { - "type": "boolean", - "description": "Si les listes de référence doivent être traduites", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits", - "default": "true" - }, - "generateComments": { - "type": "boolean", - "description": "Ajoute les commentaires dans les entités JS générées." - }, - "generateMainResourceFiles": { - "type": "boolean", - "description": "Génère un fichier 'index.ts' qui importe et réexporte tous les fichiers de resources générés par langue. Uniquement compatible avec `resourceMode: js`." - }, - "referenceMode": { - "type": "string", - "description": "Mode de génération des listes de références (définitions ou valeurs).", - "enum": [ - "definition", - "values" - ], - "default": "definition" - } - } - } - }, - "jpa": { - "type": "array", - "items": { - "type": "object", - "description": "Config pour la génération de Jpa.", - "additionalProperties": false, - "required": [ - "tags", - "outputDirectory" - ], - "properties": { - "language": { - "type": "string", - "description": "Langage du générateur, utilisé pour choisir l'implémentation correspondante des domaines, décorateurs et convertisseurs. Par défaut : 'java'." - }, - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "type": "string" - } - } - }, - "tagVariables": { - "type": "object", - "description": "Définitions de variables par tag à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".*": { - "type": "object", - "patternProperties": { - ".*": { - "type": "string" - } - } - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "JpaModelGen", - "JpaInterfaceGen", - "JpaMapperGenerator", - "JpaDaoGen", - "JpaEnumGenerator", - "JpaResourceGen", - "SpringApiServerGen", - "SpringApiClientGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "translateReferences": { - "type": "boolean", - "description": "Si les libellés des listes de références doivent être traduits.", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits.", - "default": "true" - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "entitiesPath": { - "type": "string", - "description": "Localisation des classes persistées du modèle, relative au répertoire de génération. Par défaut, 'javagen:{app}/entities/{module}'." - }, - "daosPath": { - "type": "string", - "description": "Localisation des DAOs, relative au répertoire de génération." - }, - "dtosPath": { - "type": "string", - "description": "Localisation des classes non persistées du modèle, relative au répertoire de génération. Par défaut, 'javagen:{app}/dtos/{module}'." - }, - "enumsPath": { - "type": "string", - "description": "Localisation des enums du modèle, relative au répertoire de génération.", - "default": "javagen:{app}/enums/{module}" - }, - "apiPath": { - "type": "string", - "description": "Localisation du l'API générée (client ou serveur), relative au répertoire de génération. Par défaut, 'javagen:{app}/api/{module}'.", - "default": "javagen:{app}/api/{module}" - }, - "compositionConverterCanonicalName": { - "type": "string", - "description": "Nom complet de la classe permettant de convertir les compositions stockées en json dans la bdd. Supporte le template {package} et {class}", - "default": "{package}.{class}Converter" - }, - "apiGeneration": { - "oneOf": [ - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "enum": [ - "Client", - "Server" - ] - }, - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "clientApiGeneration": { - "oneOf": [ - { - "type": "string", - "description": "Mode de génération de l'API Client ('Client' ou 'Server')", - "default": "RestClient", - "enum": [ - "RestTemplate", - "RestClient" - ] - }, - { - "type": "string", - "description": "Mode de génération de l'API ('RestTemplate' ou 'RestClient')", - "default": "RestClient", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "resourcesPath": { - "type": "string", - "description": "Localisation des ressources, relative au répertoire de génération." - }, - "resourcesEncoding": { - "type": "string", - "description": "Encodage des fichiers de resource.", - "default": "Latin1", - "enum": [ - "Latin1", - "UTF8" - ] - }, - "useJdbc": { - "type": "boolean", - "description": "Générer les entités en mode JDBC", - "default": "false" - }, - "daosAbstract": { - "type": "boolean", - "description": " Génération d'interface Abstract avec @NoRepositoryBean permettant de mettre à jour le code généré", - "default": "false" - }, - "daosInterface": { - "type": "string", - "description": "Précise l'interface des Daos générés.", - "default": "false" - }, - "mappersInClass": { - "type": "boolean", - "description": "Indique s'il faut ajouter les mappers en tant méthode ou constructeur dans les classes qui les déclarent" - }, - "dataFlowsPath": { - "type": "string", - "description": "Localisation des flux de données générés." - }, - "dataFlowsBulkSize": { - "type": "number", - "description": "Taille des chunks à extraire et insérer" - }, - "dataFlowsListeners": { - "type": "array", - "description": "Listeners à ajouter à tous les dataflows", - "items": { - "type": "string", - "description": "Listener à ajouter à tous les dataflows" - } - }, - "dbSchema": { - "type": "string", - "description": "Nom du schéma sur lequel les entités sont sauvegardées" - }, - "enumShortcutMode": { - "type": "boolean", - "description": "Option pour générer des getters et setters vers l'enum des références plutôt que sur la table", - "default": "false" - }, - "associationAdders": { - "type": "boolean", - "description": "Option pour générer des méthodes d'ajouts pour les associations oneToMany et manyToMany. Ces méthodes permettent de synchroniser les objets ajoutés", - "default": "false" - }, - "associationRemovers": { - "type": "boolean", - "description": "Option pour générer des méthodes de suppression pour les associations oneToMany et manyToMany. Ces méthodes permettent de synchroniser les objets supprimés", - "default": "false" - }, - "generatedHint": { - "type": "boolean", - "description": "Option pour générer l'annotation @Generated('TopModel : https://github.com/klee-contrib/topmodel')", - "default": "true" - }, - "fieldsEnum": { - "type": "string", - "description": "Option pour générer une enum des champs des classes persistées", - "default": "None", - "enum": [ - "None", - "Persisted", - "Dto", - "Persisted_Dto" - ] - }, - "fieldsEnumInterface": { - "type": "string", - "description": "Précise l'interface des fields enum générés." - }, - "persistenceMode": { - "type": "string", - "description": "Mode de génération de la persistence ('Javax' ou 'Jakarta')", - "enum": [ - "javax", - "jakarta" - ] - }, - "identity": { - "type": "object", - "description": "Options de génération de la séquence", - "properties": { - "mode": { - "type": "string", - "description": "Mode de génération des séquences.", - "enum": [ - "none", - "sequence", - "identity" - ], - "default": "identity" - }, - "increment": { - "type": "number", - "description": "Incrément de la séquence générée." - }, - "start": { - "type": "number", - "description": "Début de la séquence générée." - } - } - } - } - } - }, "sql": { "type": "array", "items": { @@ -938,80 +250,6 @@ } } } - }, - "translation": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": false, - "required": [ - "outputDirectory", - "tags" - ], - "properties": { - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "type": "string" - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "JTranslationOutGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "translateReferences": { - "type": "boolean", - "description": "Si les libellés des listes de références doivent être traduits.", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits.", - "default": "true" - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "rootPath": { - "type": "string", - "description": "Template du chemin des dossiers de traductions sortants (manquants). Doit contenir le template {lang}", - "default": "{lang}" - }, - "defaultLang": { - "type": "string", - "description": "Langue par défaut (celle dans laquelle sont écris les labels dans les fichiers .tmd" - }, - "langs": { - "type": "array", - "items": { - "type": "string", - "description": "Code du angage" - } - } - } - } } }, "additionalProperties": false diff --git a/samples/generators/translation/topmodel.config b/samples/generators/translation/topmodel.config index b2ad8209..d90ae18d 100644 --- a/samples/generators/translation/topmodel.config +++ b/samples/generators/translation/topmodel.config @@ -1,8 +1,10 @@ -# yaml-language-server: $schema=./topmodel.config.schema.json +# yaml-language-server: $schema=./topmodel.config.schema.json --- app: Translation modelRoot: ../../model lockFileName: translation.topmodel.lock +generators: + - ../../../TopModel.Generator.Translation i18n: rootPath: i18n/{lang}/in defaultLang: fr_FR diff --git a/samples/generators/translation/topmodel.config.schema.json b/samples/generators/translation/topmodel.config.schema.json index 7dcf64b3..27d7b4a3 100644 --- a/samples/generators/translation/topmodel.config.schema.json +++ b/samples/generators/translation/topmodel.config.schema.json @@ -89,856 +89,6 @@ "type": "string" } }, - "csharp": { - "type": "array", - "items": { - "type": "object", - "description": "Config pour la génération de C#.", - "additionalProperties": false, - "required": [ - "outputDirectory", - "tags" - ], - "properties": { - "language": { - "type": "string", - "description": "Langage du générateur, utilisé pour choisir l'implémentation correspondante des domaines, décorateurs et convertisseurs. Par défaut : 'csharp'." - }, - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "boolean" - } - ] - } - } - }, - "tagVariables": { - "type": "object", - "description": "Définitions de variables par tag à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".*": { - "type": "object", - "patternProperties": { - ".*": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "boolean" - } - ] - } - } - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "CSharpClassGen", - "CSharpMapperGen", - "CSharpDbContextGen", - "CSharpRefAccessGen", - "CSharpApiServerGen", - "CSharpApiClientGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "translateReferences": { - "type": "boolean", - "description": "Si les libellés des listes de références doivent être traduits.", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits.", - "default": "true" - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "persistentModelPath": { - "type": "string", - "description": "Localisation du modèle persisté, relative au répertoire de génération. Par défaut : {app}.{module}.Models." - }, - "referencesModelPath": { - "type": "string", - "description": "Localisation des classes de références, relative au répertoire de génération. Si non renseigné, ces classes seront générées comme les autres (selon si elles sont persistantes ou non)." - }, - "nonPersistentModelPath": { - "type": "string", - "description": "Localisation du modèle non persisté, relative au répertoire de génération. Par défaut : {app}.{module}.Models/Dto." - }, - "apiRootPath": { - "type": "string", - "description": "Localisation du l'API générée (client ou serveur), relative au répertoire de génération. Par défaut : {app}.Web." - }, - "apiFilePath": { - "type": "string", - "description": "Chemin vers lequel sont créés les fichiers d'endpoints générés, relative à la racine de l'API. Par défaut : {module}." - }, - "apiGeneration": { - "oneOf": [ - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "enum": [ - "Client", - "Server" - ] - }, - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "dataFlowsPath": { - "type": "string", - "description": "Localisation des flux de données générés." - }, - "useEFMigrations": { - "type": "boolean", - "description": "Utilise les migrations EF pour créer/mettre à jour la base de données. Par défaut : 'true'." - }, - "dbContextPath": { - "type": "string", - "description": "Localisation du DbContext, relative au répertoire de génération." - }, - "dbContextName": { - "type": "string", - "description": "Nom du DbContext. Par défaut : {app}DbContext." - }, - "referenceAccessorsInterfacePath": { - "type": "string", - "description": "Chemin vers lequel générer les interfaces d'accesseurs de référence. Par défaut : {DbContextPath}/Reference." - }, - "referenceAccessorsImplementationPath": { - "type": "string", - "description": "Chemin vers lequel générer les implémentation d'accesseurs de référence. Par défaut : {DbContextPath}/Reference." - }, - "referenceAccessorsName": { - "type": "string", - "description": "Nom des accesseurs de référence (préfixé par 'I' pour l'interface). Par défaut : {module}ReferenceAccessors." - }, - "noAsyncControllers": { - "type": "boolean", - "description": "Génère des contrôleurs d'API synchrones." - }, - "useLowerCaseSqlNames": { - "type": "boolean", - "description": "Utilise des noms de tables et de colonnes en lowercase. Par défaut : 'true'." - }, - "dbSchema": { - "type": "string", - "description": "Le nom du schéma de base de données à cibler (si non renseigné, EF utilise 'dbo')." - }, - "kinetix": { - "type": "boolean", - "description": "Si on génère avec Kinetix." - }, - "domainNamespace": { - "type": "string", - "description": "Namespace de l'enum de domaine pour Kinetix. Par défaut : '{app}.Common'." - }, - "valueTypes": { - "type": "array", - "description": "Types C# que le générateur doit considérer comme étant types valeurs (en plus des plus standard comme 'int', 'bool' ou 'DateTime'), qu'il faudra wrapper dans un `Nullable` (avec un `?`) pour les rendre nullables.", - "items": { - "type": "string" - } - }, - "nullableEnable": { - "type": "boolean", - "description": "Prend en compte l'activation du paramètre `nullable: enable` dans le code généré (pour ajouter des `?` derrière les types références nullables)." - }, - "requiredNonNullable": { - "oneOf": [ - { - "type": "boolean", - "description": "Génère des types non-nullables pour les propriétés obligatoires." - }, - { - "type": "string", - "description": "Génère des types non-nullables pour les propriétés obligatoires.", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "noColumnOnAlias": { - "type": "boolean", - "description": "Ne génère pas les attributs de colonnes sur les alias dans les classes non persistées. Par défaut : 'true'." - }, - "noPersistence": { - "oneOf": [ - { - "type": "boolean", - "description": "Considère tous les classes comme étant non-persistantes (= pas d'attribut SQL)." - }, - { - "type": "string", - "description": "Considère tous les classes comme étant non-persistantes (= pas d'attribut SQL).", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "mapperTagsOverrides": { - "type": "array", - "description": "Si un mapper contient au moins une classe de ces tags, alors il sera généré avec les tags de cette classe (au lieu du comportement par défaut qui priorise les tags de la classe persistée puis de celle qui définit le mapper).", - "items": { - "type": "string" - } - }, - "mapperLocationPriority": { - "type": "string", - "description": "Détermine le type de classe prioritaire pour déterminer la localisation des mappers générés (`persistent` ou `non-persistent`). Par défaut : 'persistent'", - "enum": [ - "persistent", - "non-persistent" - ] - }, - "enumsForStaticReferences": { - "type": "boolean", - "description": "Utilise des enums au lieu de strings pour les PKs de listes de référence statiques." - }, - "useEFComments": { - "type": "boolean", - "description": "Annote les tables et les colonnes générées par EF avec les commentaires du modèle (nécessite `UseEFMigrations`)." - }, - "useRecords": { - "type": [ - "string", - "boolean" - ], - "description": "Utilise des records (mutables) au lieu de classes pour la génération de classes.", - "enum": [ - true, - false, - "dtos-only" - ] - }, - "usePrimaryConstructors": { - "type": "boolean", - "description": "Utilise les constructeurs principaux pour la génération des classes avec dépendances (clients d'API, accesseurs de références)." - } - } - } - }, - "javascript": { - "type": "array", - "items": { - "type": "object", - "description": "Config pour la génération de Javascript.", - "additionalProperties": false, - "required": [ - "outputDirectory", - "tags" - ], - "properties": { - "language": { - "type": "string", - "description": "Langage du générateur, utilisé pour choisir l'implémentation correspondante des domaines, décorateurs et convertisseurs. Par défaut : 'ts'." - }, - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "type": "string" - } - } - }, - "tagVariables": { - "type": "object", - "description": "Définitions de variables par tag à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".*": { - "type": "object", - "patternProperties": { - ".*": { - "type": "string" - } - } - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "JSDefinitionGen", - "JSReferenceGen", - "JSNGApiClientGen", - "JSApiClientGen", - "JSResourceGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "modelRootPath": { - "type": "string", - "description": "Localisation du modèle, relative au répertoire de génération. Si non renseigné, aucun modèle ne sera généré." - }, - "resourceRootPath": { - "type": "string", - "description": "Localisation des ressources i18n, relative au répertoire de génération. Si non renseigné, aucun fichier ne sera généré" - }, - "apiClientRootPath": { - "type": "string", - "description": "Localisation des clients d'API, relative au répertoire de génération. Si non renseigné, aucun fichier ne sera généré." - }, - "apiClientFilePath": { - "type": "string", - "description": "Chemin vers lequel sont créés les fichiers d'endpoints générés, relatif à la racine de l'API. En mode Angular, la valeur par défaut est `{module}/{fileName}.service`", - "default": "{module}/{fileName}" - }, - "fetchPath": { - "type": "string", - "description": "Chemin ou import vers un 'fetch' personnalisé, relatif au répertoire de génération s'il commence par un '.'." - }, - "domainPath": { - "type": "string", - "description": "Chemin ou import vers le fichier 'domain', relatif au répertoire de génération s'il commence par un '.'.", - "default": "../domains" - }, - "apiMode": { - "type": "string", - "description": "Framework cible pour la génération.", - "default": "focus", - "enum": [ - "angular", - "angular_promise", - "vanilla", - "nuxt" - ] - }, - "entityMode": { - "type": "string", - "description": "Framework cible pour la génération.", - "default": "typed", - "enum": [ - "untyped", - "typed" - ] - }, - "extendedCompositions": { - "type": "boolean", - "description": "Génère `isRequired`, `label` (et `comment`) sur les compositions dans les entitées typées." - }, - "entityTypesPath": { - "type": "string", - "description": "Chemin d'import des type d'entités", - "default": "@focus4/stores" - }, - "resourceMode": { - "type": "string", - "description": "Mode de génération (JS, JSON ou JSON Schema).", - "enum": [ - "js", - "json" - ] - }, - "translateReferences": { - "type": "boolean", - "description": "Si les listes de référence doivent être traduites", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits", - "default": "true" - }, - "generateComments": { - "type": "boolean", - "description": "Ajoute les commentaires dans les entités JS générées." - }, - "generateMainResourceFiles": { - "type": "boolean", - "description": "Génère un fichier 'index.ts' qui importe et réexporte tous les fichiers de resources générés par langue. Uniquement compatible avec `resourceMode: js`." - }, - "referenceMode": { - "type": "string", - "description": "Mode de génération des listes de références (définitions ou valeurs).", - "enum": [ - "definition", - "values" - ], - "default": "definition" - } - } - } - }, - "jpa": { - "type": "array", - "items": { - "type": "object", - "description": "Config pour la génération de Jpa.", - "additionalProperties": false, - "required": [ - "tags", - "outputDirectory" - ], - "properties": { - "language": { - "type": "string", - "description": "Langage du générateur, utilisé pour choisir l'implémentation correspondante des domaines, décorateurs et convertisseurs. Par défaut : 'java'." - }, - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "type": "string" - } - } - }, - "tagVariables": { - "type": "object", - "description": "Définitions de variables par tag à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".*": { - "type": "object", - "patternProperties": { - ".*": { - "type": "string" - } - } - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "JpaModelGen", - "JpaInterfaceGen", - "JpaMapperGenerator", - "JpaDaoGen", - "JpaEnumGenerator", - "JpaResourceGen", - "SpringApiServerGen", - "SpringApiClientGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "translateReferences": { - "type": "boolean", - "description": "Si les libellés des listes de références doivent être traduits.", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits.", - "default": "true" - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "entitiesPath": { - "type": "string", - "description": "Localisation des classes persistées du modèle, relative au répertoire de génération. Par défaut, 'javagen:{app}/entities/{module}'." - }, - "daosPath": { - "type": "string", - "description": "Localisation des DAOs, relative au répertoire de génération." - }, - "dtosPath": { - "type": "string", - "description": "Localisation des classes non persistées du modèle, relative au répertoire de génération. Par défaut, 'javagen:{app}/dtos/{module}'." - }, - "enumsPath": { - "type": "string", - "description": "Localisation des enums du modèle, relative au répertoire de génération.", - "default": "javagen:{app}/enums/{module}" - }, - "apiPath": { - "type": "string", - "description": "Localisation du l'API générée (client ou serveur), relative au répertoire de génération. Par défaut, 'javagen:{app}/api/{module}'.", - "default": "javagen:{app}/api/{module}" - }, - "compositionConverterCanonicalName": { - "type": "string", - "description": "Nom complet de la classe permettant de convertir les compositions stockées en json dans la bdd. Supporte le template {package} et {class}", - "default": "{package}.{class}Converter" - }, - "apiGeneration": { - "oneOf": [ - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "enum": [ - "Client", - "Server" - ] - }, - { - "type": "string", - "description": "Mode de génération de l'API ('Client' ou 'Server')", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "clientApiGeneration": { - "oneOf": [ - { - "type": "string", - "description": "Mode de génération de l'API Client ('Client' ou 'Server')", - "default": "RestClient", - "enum": [ - "RestTemplate", - "RestClient" - ] - }, - { - "type": "string", - "description": "Mode de génération de l'API ('RestTemplate' ou 'RestClient')", - "default": "RestClient", - "pattern": "^\\{[^\\}]+\\}$" - } - ] - }, - "resourcesPath": { - "type": "string", - "description": "Localisation des ressources, relative au répertoire de génération." - }, - "resourcesEncoding": { - "type": "string", - "description": "Encodage des fichiers de resource.", - "default": "Latin1", - "enum": [ - "Latin1", - "UTF8" - ] - }, - "useJdbc": { - "type": "boolean", - "description": "Générer les entités en mode JDBC", - "default": "false" - }, - "daosAbstract": { - "type": "boolean", - "description": " Génération d'interface Abstract avec @NoRepositoryBean permettant de mettre à jour le code généré", - "default": "false" - }, - "daosInterface": { - "type": "string", - "description": "Précise l'interface des Daos générés.", - "default": "false" - }, - "mappersInClass": { - "type": "boolean", - "description": "Indique s'il faut ajouter les mappers en tant méthode ou constructeur dans les classes qui les déclarent" - }, - "dataFlowsPath": { - "type": "string", - "description": "Localisation des flux de données générés." - }, - "dataFlowsBulkSize": { - "type": "number", - "description": "Taille des chunks à extraire et insérer" - }, - "dataFlowsListeners": { - "type": "array", - "description": "Listeners à ajouter à tous les dataflows", - "items": { - "type": "string", - "description": "Listener à ajouter à tous les dataflows" - } - }, - "dbSchema": { - "type": "string", - "description": "Nom du schéma sur lequel les entités sont sauvegardées" - }, - "enumShortcutMode": { - "type": "boolean", - "description": "Option pour générer des getters et setters vers l'enum des références plutôt que sur la table", - "default": "false" - }, - "associationAdders": { - "type": "boolean", - "description": "Option pour générer des méthodes d'ajouts pour les associations oneToMany et manyToMany. Ces méthodes permettent de synchroniser les objets ajoutés", - "default": "false" - }, - "associationRemovers": { - "type": "boolean", - "description": "Option pour générer des méthodes de suppression pour les associations oneToMany et manyToMany. Ces méthodes permettent de synchroniser les objets supprimés", - "default": "false" - }, - "generatedHint": { - "type": "boolean", - "description": "Option pour générer l'annotation @Generated('TopModel : https://github.com/klee-contrib/topmodel')", - "default": "true" - }, - "fieldsEnum": { - "type": "string", - "description": "Option pour générer une enum des champs des classes persistées", - "default": "None", - "enum": [ - "None", - "Persisted", - "Dto", - "Persisted_Dto" - ] - }, - "fieldsEnumInterface": { - "type": "string", - "description": "Précise l'interface des fields enum générés." - }, - "persistenceMode": { - "type": "string", - "description": "Mode de génération de la persistence ('Javax' ou 'Jakarta')", - "enum": [ - "javax", - "jakarta" - ] - }, - "identity": { - "type": "object", - "description": "Options de génération de la séquence", - "properties": { - "mode": { - "type": "string", - "description": "Mode de génération des séquences.", - "enum": [ - "none", - "sequence", - "identity" - ], - "default": "identity" - }, - "increment": { - "type": "number", - "description": "Incrément de la séquence générée." - }, - "start": { - "type": "number", - "description": "Début de la séquence générée." - } - } - } - } - } - }, - "sql": { - "type": "array", - "items": { - "type": "object", - "description": "Config pour la génération de SQL.", - "additionalProperties": false, - "required": [ - "outputDirectory", - "tags" - ], - "properties": { - "language": { - "type": "string", - "description": "Langage du générateur, utilisé pour choisir l'implémentation correspondante des domaines, décorateurs et convertisseurs. Par défaut : 'sql'." - }, - "tags": { - "type": "array", - "description": "Précise les tags de fichier que le générateur doit lire", - "items": { - "type": "string", - "description": "Catégorie de fichier que le générateur doit lire." - } - }, - "variables": { - "type": "object", - "description": "Définitions de variables à utiliser dans les différents paramètres du générateur.", - "patternProperties": { - ".+": { - "type": "string" - } - } - }, - "disable": { - "type": "array", - "description": "Désactive les générateurs demandés", - "items": { - "type": "string", - "enum": [ - "SsdtGen", - "ProceduralSqlGen" - ] - } - }, - "outputDirectory": { - "type": "string", - "description": "Racine du répertoire de génération." - }, - "translateReferences": { - "type": "boolean", - "description": "Si les libellés des listes de références doivent être traduits.", - "default": "true" - }, - "translateProperties": { - "type": "boolean", - "description": "Si les libellés des propriétés doivent être traduits.", - "default": "true" - }, - "resourcesTableName": { - "type": "string", - "description": "Nom de la table dans laquelle doivent être insérées les traductions." - }, - "ignoreDefaultValues": { - "type": "boolean", - "description": "Désactive la génération des valeurs par défaut des propriétés dans les classes et endpoints générés avec cette configuration." - }, - "targetDBMS": { - "type": "string", - "description": "SGBD cible ('postgre' ou 'sqlserver').", - "enum": [ - "sqlserver", - "postgre" - ] - }, - "procedural": { - "type": "object", - "description": "Config pour la génération de SQL 'procédurale'.", - "additionalProperties": false, - "properties": { - "crebasFile": { - "type": "string", - "description": "Emplacement du fichier de création de base." - }, - "uniqueKeysFile": { - "type": "string", - "description": "Emplacement du fichier de création des index uniques." - }, - "indexFKFile": { - "type": "string", - "description": "Emplacement du fichier de création des clés étrangères." - }, - "typeFile": { - "type": "string", - "description": "Emplacement du fichier de création des types." - }, - "commentFile": { - "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." - }, - "identity": { - "type": "object", - "description": "Options de génération de la séquence", - "properties": { - "mode": { - "type": "string", - "description": "Mode de génération des séquences.", - "enum": [ - "none", - "sequence", - "identity" - ], - "default": "identity" - }, - "increment": { - "type": "number", - "description": "Incrément de la séquence générée." - }, - "start": { - "type": "number", - "description": "Début de la séquence générée." - } - } - } - } - }, - "ssdt": { - "type": "object", - "description": "Config pour la génération SSDT", - "additionalProperties": false, - "properties": { - "tableScriptFolder": { - "type": "string", - "description": "Dossier du projet pour les scripts de déclaration de table." - }, - "tableTypeScriptFolder": { - "type": "string", - "description": " Dossier du projet pour les scripts de déclaration de type table." - }, - "initListScriptFolder": { - "type": "string", - "description": "Dossier du projet pour les scripts d'initialisation des listes de références." - }, - "initListMainScriptName": { - "type": "string", - "description": "Fichier du projet référençant les scripts d'initialisation des listes de références." - }, - "disableIdentity": { - "type": "boolean", - "description": "Désactive les colonnes d'identité." - } - } - } - } - } - }, "translation": { "type": "array", "items": {