Skip to content

Latest commit

 

History

History
283 lines (216 loc) · 6.08 KB

File metadata and controls

283 lines (216 loc) · 6.08 KB

Architecture officielle GsId

⋞Galactic-Shrine⋟ GsId

Système d’identifiant 256 bits pour les projets ⋞Galactic-Shrine⋟


Objectif

GsId est un système d’identifiant personnalisé conçu pour fournir une alternative étendue aux identifiants de type GUID / UUID classiques.

Contrairement à un GUID standard basé sur 128 bits, GsId repose sur un identifiant 256 bits, représenté par 64 caractères hexadécimaux sans tirets.

Le projet fournit actuellement :

  • une implémentation C# / .NET 8 ;
  • une implémentation PHP ;
  • une intégration JSON côté C# ;
  • une intégration Symfony côté PHP ;
  • un type Doctrine DBAL côté PHP ;
  • une configuration globale via GsIdOptions.

Format officiel

Format N

Format compact sans tirets.

9F2A6C1E8D4B7A90A13F9C2DE88B421091AF77CB4D6E39A2FC018AD92E7B5C64
Propriété Valeur
Longueur 64 caractères
Tirets Non
Usage recommandé Base de données, stockage, indexation

Format D

Format lisible avec 5 tirets.

9F2A6C1E8D4B7A90-A13F9C2D-E88B4210-91AF77CB-4D6E39A2-FC018AD92E7B5C64
Propriété Valeur
Longueur 69 caractères
Tirets Oui
Motif 16-8-8-8-8-16
Usage recommandé Logs, affichage, API lisible

Casse supportée

GsId supporte deux modes de casse :

Mode Description
Upper Lettres hexadécimales en majuscules
Lower Lettres hexadécimales en minuscules

Exemple en majuscules :

9F2A6C1E8D4B7A90-A13F9C2D-E88B4210-91AF77CB-4D6E39A2-FC018AD92E7B5C64

Exemple en minuscules :

9f2a6c1e8d4b7a90-a13f9c2d-e88b4210-91af77cb-4d6e39a2-fc018ad92e7b5c64

Options globales

La configuration centrale est gérée par GsIdOptions.

Options disponibles

Option Description Valeur par défaut
DefaultCase Casse par défaut Upper
DefaultTextFormat Format texte par défaut D
DefaultJsonFormat Format JSON par défaut D
DefaultDatabaseFormat Format base de données par défaut N
IsLocked Indique si les options sont verrouillées false
Lock Verrouille la configuration false

Règles de fonctionnement

  • le stockage interne reste invariant ;
  • le parsing accepte les majuscules et les minuscules ;
  • les comparaisons ne dépendent pas de la casse affichée ;
  • ToString() utilise DefaultTextFormat et DefaultCase ;
  • la sérialisation JSON utilise DefaultJsonFormat et DefaultCase ;
  • Doctrine utilise DefaultDatabaseFormat et DefaultCase ;
  • une casse ou un format explicitement passé à une méthode reste prioritaire ;
  • le verrouillage empêche toute modification ultérieure des options globales.

Configuration applicative

C# — appsettings.json

{
  "GsId": {
    "DefaultCase": "Lower",
    "DefaultTextFormat": "N",
    "DefaultJsonFormat": "D",
    "DefaultDatabaseFormat": "N",
    "Lock": true
  }
}

Fichier associé :

csharp/src/GalacticShrine.GsId/GsIdOptionsConfiguration.cs

PHP / Symfony — gsid.yaml

gsid:
  default_case: Lower
  default_text_format: N
  default_json_format: D
  default_database_format: N
  lock: true

Fichiers associés :

php/src/GsIdSymfonyOptionsConfigurator.php
php/src/Symfony/GsIdBundle.php
php/src/Symfony/DependencyInjection/Configuration.php
php/src/Symfony/DependencyInjection/GsIdExtension.php

Stockage recommandé

Base de données

Le stockage recommandé est :

CHAR(64)

Avec le format :

N

Exemple :

9F2A6C1E8D4B7A90A13F9C2DE88B421091AF77CB4D6E39A2FC018AD92E7B5C64

Arborescence officielle

GsId/
├─ .gitignore
├─ LICENSE.md
├─ CHANGELOG.md
├─ README.md
├─ README.en.md
├─ README.es.md
├─ README.it.md
├─ README.jp.md
├─ ARCHITECTURE.md
├─ ARCHITECTURE.en.md
├─ ARCHITECTURE.es.md
├─ ARCHITECTURE.it.md
├─ ARCHITECTURE.jp.md
├─ csharp/
│  ├─ README.md
│  ├─ examples/
│  │  └─ appsettings.gsid.json
│  ├─ src/
│  │  └─ GalacticShrine.GsId/
│  │     ├─ GalacticShrine.GsId.csproj
│  │     ├─ GsId.cs
│  │     ├─ GsIdCase.cs
│  │     ├─ GsIdConstants.cs
│  │     ├─ GsIdException.cs
│  │     ├─ GsIdFormat.cs
│  │     ├─ GsIdGenerator.cs
│  │     ├─ GsIdJsonConverter.cs
│  │     ├─ GsIdOptions.cs
│  │     ├─ GsIdOptionsConfiguration.cs
│  │     ├─ GsIdParser.cs
│  │     └─ GsIdValidator.cs
│  └─ tests/
│     └─ GalacticShrine.GsId.Tests/
│        ├─ GalacticShrine.GsId.Tests.csproj
│        └─ GsIdTests.cs
└─ php/
   ├─ README.md
   ├─ composer.json
   ├─ phpunit.xml
   ├─ config/
   │  ├─ services.gsid.yaml
   │  └─ packages/
   │     └─ gsid.yaml
   ├─ src/
   │  ├─ GsId.php
   │  ├─ GsIdCase.php
   │  ├─ GsIdConstants.php
   │  ├─ GsIdDoctrineType.php
   │  ├─ GsIdException.php
   │  ├─ GsIdFormat.php
   │  ├─ GsIdGenerator.php
   │  ├─ GsIdOptions.php
   │  ├─ GsIdParser.php
   │  ├─ GsIdSymfonyOptionsConfigurator.php
   │  ├─ GsIdSymfonyUidBridge.php
   │  ├─ GsIdValidator.php
   │  └─ Symfony/
   │     ├─ GsIdBundle.php
   │     └─ DependencyInjection/
   │        ├─ Configuration.php
   │        └─ GsIdExtension.php
   └─ tests/
      └─ GsIdTest.php

Validation actuelle

Partie Statut
C# build Validé
C# tests 14 / 14
PHP Composer Validé
PHP tests 23 / 23
PHP assertions 46
Symfony config Préparée
Doctrine DBAL Préparé

Statut du projet

GsId 1.0.0 : validé
C#          : validé
PHP         : validé
Tests       : validés
Docs        : structurées

GsId peut maintenant être considéré comme une base stable de développement pour les projets ⋞Galactic-Shrine⋟.