Skip to content

Latest commit

 

History

History
248 lines (175 loc) · 6.08 KB

File metadata and controls

248 lines (175 loc) · 6.08 KB

⋞Galactic-Shrine⋟ GsId

⋞Galactic-Shrine⋟ プロジェクト向け 256 ビット識別子システム

C# / .NET および PHP で利用可能な 256 ビット 識別子システム。N / D 形式、検証、パーシング、JSON、Symfony、Doctrine DBAL、およびアプリケーション設定に対応しています。

組織 プロジェクト カテゴリ C# PHP ライセンス ステータス

言語: フランス語 · 英語 · スペイン語 · イタリア語 · 日本語


概要

GsIdは、⋞Galactic-Shrine⋟プロジェクト向けに設計された256ビットの識別子システムです。

これは、従来のGUID/UUIDタイプの識別子に代わるカスタマイズされた代替手段を提供し、そのサイズは従来の2倍となっています:

  • 従来のGUID / UUID:128ビット、ハイフンなしの16進数32文字;
  • GsId:256ビット、ハイフンなしの16進数64文字。

本プロジェクトでは、2つの同期化された実装を提供しています:

  • C# / .NET 8 版;
  • SymfonyおよびDoctrine DBALと統合された PHP 8.3 以上 版。

公式名称

フィールド
組織 ⋞Galactic-Shrine⋟
プロジェクト GsId
公式名称 ⋞Galactic-Shrine⋟ GsId
カテゴリ 256ビット識別子システム
言語 C# / PHP
ライセンス MPL-2.0
ステータス 本番 / 1.0.2

公式フォーマット

N フォーマット

ハイフンなしのコンパクトなフォーマット。

9F2A6C1E8D4B7A90A13F9C2DE88B421091AF77CB4D6E39A2FC018AD92E7B5C64

D 形式

16-8-8-8-8-16 のパターンに従った、5つのハイフンを含む可読形式。

9F2A6C1E8D4B7A90-A13F9C2D-E88B4210-91AF77CB-4D6E39A2-FC018AD92E7B5C64
形式 説明 長さ
N ハイフンなし 64
D ハイフン5つ 69

機能

  • 256ビットのID
  • 安全なランダム生成
  • 厳格なパーシング
  • 形式の検証
  • NおよびD形式
  • 大文字または小文字での出力
  • GsIdOptions によるグローバルオプション
  • 設定のロック
  • C# 側の JSON サポート
  • PHP 側の Symfony ブリッジ
  • PHP 側の Doctrine DBAL タイプ
  • appsettings.json による C# アプリケーション設定
  • YAML またはバンドルによる Symfony 設定
  • C# xUnit による単体テスト
  • PHP PHPUnit による単体テスト

グローバルオプション

V4では、GsIdOptionsを使用してデフォルトの動作を一元化しています。

オプション 役割 デフォルト
DefaultCase デフォルトの大文字小文字 Upper
DefaultTextFormat ToString() / toString() のフォーマット D
DefaultJsonFormat デフォルトのJSON形式 D
DefaultDatabaseFormat DB保存形式 N
Lock オプションのロック false

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();

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();

C#の設定 — appsettings.json

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

Symfonyの設定

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

リポジトリの構造

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

テスト

C#

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

ローカルでの検証結果:14 / 14 テスト成功

PHP

cd php
composer install
composer test

ローカルでの検証結果:23 / 23 テスト成功


ライセンス

このプロジェクトは、Mozilla Public License 2.0 に基づいて配布されています。

LICENSE.jp.md をご覧ください。


リンク


⋞Galactic-Shrine⋟ GsId
256ビット識別子システム
C# · PHP · Symfony · Doctrine