Skip to content

Latest commit

 

History

History
283 lines (216 loc) · 6.13 KB

File metadata and controls

283 lines (216 loc) · 6.13 KB

Arquitectura oficial de GsId

⋞Galactic-Shrine⋟ GsId

Sistema de identificadores de 256 bits para los proyectos de ⋞Galactic-Shrine⋟


Objetivo

GsId es un sistema de identificadores personalizado diseñado para ofrecer una alternativa ampliada a los identificadores clásicos de tipo GUID / UUID.

A diferencia de un GUID estándar basado en 128 bits, GsId se basa en un identificador de 256 bits, representado por 64 caracteres hexadecimales sin guiones.

Actualmente el proyecto ofrece:

  • una implementación C# / .NET 8;
  • una implementación PHP;
  • integración JSON para C#;
  • integración Symfony para PHP;
  • un tipo Doctrine DBAL para PHP;
  • configuración global mediante GsIdOptions.

Formato oficial

Formato N

Formato compacto sin guiones.

9F2A6C1E8D4B7A90A13F9C2DE88B421091AF77CB4D6E39A2FC018AD92E7B5C64
Propiedad Valor
Longitud 64 caracteres
Guiones No
Uso recomendado Base de datos, almacenamiento, indexación

Formato D

Formato legible con 5 guiones.

9F2A6C1E8D4B7A90-A13F9C2D-E88B4210-91AF77CB-4D6E39A2-FC018AD92E7B5C64
Propiedad Valor
Longitud 69 caracteres
Guiones
Patrón 16-8-8-8-8-16
Uso recomendado Registros, visualización, APIs legibles

Mayúsculas y minúsculas soportadas

GsId soporta dos modos de escritura:

Modo Descripción
Upper Letras hexadecimales en mayúsculas
Lower Letras hexadecimales en minúsculas

Ejemplo en mayúsculas:

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

Ejemplo en minúsculas:

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

Opciones globales

La configuración central se gestiona con GsIdOptions.

Opciones disponibles

Opción Descripción Valor por defecto
DefaultCase Escritura por defecto Upper
DefaultTextFormat Formato de texto por defecto D
DefaultJsonFormat Formato JSON por defecto D
DefaultDatabaseFormat Formato de base de datos por defecto N
IsLocked Indica si las opciones están bloqueadas false
Lock Bloquea la configuración false

Reglas de funcionamiento

  • el almacenamiento interno permanece invariable;
  • el análisis acepta tanto mayúsculas como minúsculas;
  • las comparaciones no dependen de la escritura mostrada;
  • ToString() usa DefaultTextFormat y DefaultCase;
  • la serialización JSON usa DefaultJsonFormat y DefaultCase;
  • Doctrine usa DefaultDatabaseFormat y DefaultCase;
  • una escritura o formato pasado explícitamente tiene prioridad;
  • el bloqueo impide cualquier modificación posterior de las opciones globales.

Configuración de la aplicación

C# — appsettings.json

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

Archivo asociado:

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

Archivos asociados:

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

Almacenamiento recomendado

Base de datos

El almacenamiento recomendado es:

CHAR(64)

Con el formato:

N

Ejemplo:

9F2A6C1E8D4B7A90A13F9C2DE88B421091AF77CB4D6E39A2FC018AD92E7B5C64

Árbol oficial de directorios

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

Validación actual

Parte Estado
Compilación C# Validada
Pruebas C# 14 / 14
PHP Composer Validado
Pruebas PHP 23 / 23
Aserciones PHP 46
Configuración Symfony Preparada
Doctrine DBAL Preparado

Estado del proyecto

GsId 1.0.0 : validado
C#            : validado
PHP           : validado
Pruebas       : validadas
Docs          : estructuradas

GsId ya puede considerarse una base estable de desarrollo para los proyectos de ⋞Galactic-Shrine⋟.