Skip to content

Commit

Permalink
Merge pull request #366 from klee-contrib/gideruette/issue364
Browse files Browse the repository at this point in the history
[SQL] Ordre de génération des séquances
  • Loading branch information
JabX authored Jul 9, 2024
2 parents ed53368 + 3da51a0 commit c2ecbd0
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 40 deletions.
50 changes: 29 additions & 21 deletions TopModel.Generator.Sql/Procedural/AbstractSchemaGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -499,27 +499,6 @@ private IEnumerable<AssociationProperty> WriteTableDeclaration(Class classe, Sql
var fkPropertiesList = new List<AssociationProperty>();

var tableName = Quote(CheckIdentifierLength(classe.SqlName));
if (Config.Identity.Mode == IdentityMode.SEQUENCE && classe.PrimaryKey.Count() == 1 && classe.PrimaryKey.Single().Domain.AutoGeneratedValue && !_config.GetType(classe.PrimaryKey.Single()).ToLower().Contains("varchar"))
{
writerCrebas.WriteLine("/**");
writerCrebas.WriteLine($" * Création de la séquence pour la clé primaire de la table {tableName}");
writerCrebas.WriteLine(" **/");
writerCrebas.Write($"create sequence SEQ_{tableName} as {_config.GetType(classe.PrimaryKey.Single()).ToUpper()}");

if (Config.Identity.Start != null)
{
writerCrebas.Write($"{$" start {Config.Identity.Start}"}");
}

if (Config.Identity.Increment != null)
{
writerCrebas.Write($"{$" increment {Config.Identity.Increment}"}");
}

writerCrebas.Write($" owned by {tableName}.{classe.PrimaryKey.Single().SqlName}");

writerCrebas.WriteLine(BatchSeparator);
}

writerCrebas.WriteLine("/**");
writerCrebas.WriteLine(" * Création de la table " + tableName);
Expand Down Expand Up @@ -649,9 +628,38 @@ private IEnumerable<AssociationProperty> WriteTableDeclaration(Class classe, Sql
writerType.WriteLine();
}

var shouldWriteSequence = Config.Identity.Mode == IdentityMode.SEQUENCE && classe.PrimaryKey.Count() == 1 && classe.PrimaryKey.Single().Domain.AutoGeneratedValue && !_config.GetType(classe.PrimaryKey.Single()).ToLower().Contains("varchar");
if (shouldWriteSequence)
{
WriteSequence(classe, writerCrebas, tableName);
}

return fkPropertiesList;
}

private void WriteSequence(Class classe, SqlFileWriter writerCrebas, string tableName)
{
writerCrebas.WriteLine("/**");
writerCrebas.WriteLine($" * Création de la séquence pour la clé primaire de la table {tableName}");
writerCrebas.WriteLine(" **/");
writerCrebas.Write($"create sequence SEQ_{tableName} as {_config.GetType(classe.PrimaryKey.Single()).ToUpper()}");

if (Config.Identity.Start != null)
{
writerCrebas.Write($"{$" start {Config.Identity.Start}"}");
}

if (Config.Identity.Increment != null)
{
writerCrebas.Write($"{$" increment {Config.Identity.Increment}"}");
}

writerCrebas.Write($" owned by {tableName}.{classe.PrimaryKey.Single().SqlName}");

writerCrebas.WriteLine(BatchSeparator);
writerCrebas.WriteLine();
}

/// <summary>
/// Ajoute les contraintes d'unicité.
/// </summary>
Expand Down
18 changes: 10 additions & 8 deletions samples/generators/pg/src/01_tables.sql
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,6 @@ create table DROIT (
constraint PK_DROIT primary key (DRO_CODE)
);

/**
* Création de la séquence pour la clé primaire de la table PROFIL
**/
create sequence SEQ_PROFIL as INT start 1000 increment 50 owned by PROFIL.PRO_ID;
/**
* Création de la table PROFIL
**/
Expand All @@ -32,6 +28,11 @@ create table PROFIL (
constraint PK_PROFIL primary key (PRO_ID)
);

/**
* Création de la séquence pour la clé primaire de la table PROFIL
**/
create sequence SEQ_PROFIL as INT start 1000 increment 50 owned by PROFIL.PRO_ID;

/**
* Création de la table PROFIL_DROIT
**/
Expand Down Expand Up @@ -59,10 +60,6 @@ create table TYPE_UTILISATEUR (
constraint PK_TYPE_UTILISATEUR primary key (TUT_CODE)
);

/**
* Création de la séquence pour la clé primaire de la table UTILISATEUR
**/
create sequence SEQ_UTILISATEUR as INT start 1000 increment 50 owned by UTILISATEUR.UTI_ID;
/**
* Création de la table UTILISATEUR
**/
Expand All @@ -81,6 +78,11 @@ create table UTILISATEUR (
constraint PK_UTILISATEUR primary key (UTI_ID)
);

/**
* Création de la séquence pour la clé primaire de la table UTILISATEUR
**/
create sequence SEQ_UTILISATEUR as INT start 1000 increment 50 owned by UTILISATEUR.UTI_ID;

/**
* Création de ta table TRANSLATION contenant les traductions
**/
Expand Down
10 changes: 0 additions & 10 deletions samples/generators/php/topmodel.config.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -1064,16 +1064,6 @@
"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."
Expand Down
2 changes: 1 addition & 1 deletion samples/modgen.bat
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
@REM dotnet run --project ../TopModel.ModelGenerator -f net8.0
dotnet run --project ../TopModel.Generator -f net8.0 -s
dotnet run --project ../TopModel.Generator -f net8.0

0 comments on commit c2ecbd0

Please sign in to comment.