Skip to content

Latest commit

 

History

History
250 lines (176 loc) · 5.73 KB

File metadata and controls

250 lines (176 loc) · 5.73 KB

⋞Galactic-Shrine⋟ GsId

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

Un sistema de identificadores de 256 bits, disponible en C# / .NET y PHP, con formatos N / D, validación, análisis sintáctico, JSON, Symfony, Doctrine DBAL y configuración de la aplicación.

Organización Proyecto Categoría CSharp PHP Licencia Estado

Idiomas: Français · English · Español · Italiano · 日本語


Presentación

GsId es un sistema de identificadores de 256 bits diseñado para los proyectos ⋞Galactic-Shrine⋟.

Ofrece una alternativa personalizada a los identificadores clásicos de tipo GUID/UUID, con el doble de tamaño:

  • GUID / UUID clásico: 128 bits, 32 caracteres hexadecimales sin guiones;
  • GsId: 256 bits, 64 caracteres hexadecimales sin guiones.

El proyecto ofrece dos implementaciones sincronizadas:

  • una versión C# / .NET 8;
  • una versión PHP >= 8.3 con integraciones Symfony y Doctrine DBAL.

Identidad oficial

Campo Valor
Organización ⋞Galactic-Shrine⋟
Proyecto GsId
Nombre oficial ⋞Galactic-Shrine⋟ GsId
Categoría Sistema de identificación de 256 bits
Lenguajes C# / PHP
Licencia MPL-2.0
Estado Producción / 1.0.2

Formatos oficiales

Formato N

Formato compacto, sin guiones.

9F2A6C1E8D4B7A90A13F9C2DE88B421091AF77CB4D6E39A2FC018AD92E7B5C64

Formato D

Formato legible con 5 guiones según el patrón 16-8-8-8-8-16.

9F2A6C1E8D4B7A90-A13F9C2D-E88B4210-91AF77CB-4D6E39A2-FC018AD92E7B5C64
Formato Descripción Longitud
N Sin guiones 64
D Con 5 guiones 69

Funcionalidades

  • Identificadores de 256 bits
  • Generación aleatoria segura
  • Análisis sintáctico estricto
  • Validación de formato
  • Formatos N y D
  • Salida en mayúsculas o minúsculas
  • Opciones globales mediante GsIdOptions
  • Bloqueo de configuración
  • Compatibilidad con JSON en C#
  • Puente Symfony en PHP
  • Tipo Doctrine DBAL en PHP
  • Configuración de la aplicación en C# mediante appsettings.json
  • Configuración de Symfony mediante YAML o bundle
  • Pruebas unitarias en C# con xUnit
  • Pruebas unitarias en PHP con PHPUnit

Opciones globales

La V4 centraliza los comportamientos predeterminados con GsIdOptions.

Opción Función Predeterminado
DefaultCase Mayúsculas/minúsculas predeterminadas Upper
DefaultTextFormat Formato de ToString() / toString() D
DefaultJsonFormat Formato JSON predeterminado D
DefaultDatabaseFormat Formato de almacenamiento en base de datos N
Lock Bloqueo de opciones false

Ejemplo en C#

using GalacticShrine.GsId;

GsIdOptions.Configure(
    DefaultCase: GsIdCase.Lower,
    DefaultTextFormat: GsIdFormat.N,
    DefaultJsonFormat: GsIdFormat.D,
    DefaultDatabaseFormat: GsIdFormat.N);

GsIdOptions.Lock();

GsId id = GsId.NewGsId();

string value = id.ToString();

Ejemplo en PHP

use GalacticShrine\GsId\GsId;
use GalacticShrine\GsId\GsIdCase;
use GalacticShrine\GsId\GsIdFormat;
use GalacticShrine\GsId\GsIdOptions;

GsIdOptions::configure(
    defaultCase: GsIdCase::Lower,
    defaultTextFormat: GsIdFormat::N,
    defaultJsonFormat: GsIdFormat::D,
    defaultDatabaseFormat: GsIdFormat::N,
);

GsIdOptions::lock();

$id = GsId::newGsId();

$value = $id->toString();

Configuración C# — appsettings.json

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

Configuración de Symfony

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

Estructura del repositorio

GsId/
├─ csharp/
│  ├─ src/
│  ├─ tests/
│  └─ examples/
├─ php/
│  ├─ src/
│  ├─ tests/
│  └─ config/
├─ README.md
├─ CHANGELOG.md
├─ LICENSE.md
└─ .gitignore

Pruebas

C#

dotnet test csharp/tests/GalacticShrine.GsId.Tests/GalacticShrine.GsId.Tests.csproj

Resultado validado localmente: 14 / 14 pruebas superadas.

PHP

cd php
composer install
composer test

Resultado validado localmente: 23 / 23 pruebas superadas.



Licencia

Este proyecto se distribuye bajo la licencia Mozilla Public License 2.0.

Ver LICENSE.md.


Enlaces


⋞Galactic-Shrine⋟ GsId
Sistema de identificación de 256 bits
C# · PHP · Symfony · Doctrine