Module: Synthra::SchemaVersioning

Defined in:
lib/synthra/schema_versioning.rb

Overview

Schema Versioning Support

Track schema versions and migration paths for API evolution.

Examples:

DSL syntax

User@v1:
  id: uuid
  name: name

User@v2:
  @migrated_from User@v1
  id: uuid
  first_name: name
  last_name: name

Defined Under Namespace

Classes: Analyzer, Registry

Class Method Summary collapse

Class Method Details

.parse_version(name) ⇒ Hash

Parse version from schema name

Examples:

parse_version("User@v2")
# => { name: "User", version: "v2" }

Parameters:

  • name (String)

    schema name with optional version

Returns:

  • (Hash)

    { name: String, version: String|nil }



29
30
31
32
33
34
35
36
# File 'lib/synthra/schema_versioning.rb', line 29

def self.parse_version(name)
  if name.include?("@")
    parts = name.split("@", 2)
    { name: parts[0], version: parts[1] }
  else
    { name: name, version: nil }
  end
end

.registry_key(name, version = nil) ⇒ String

Generate schema key for registry

Parameters:

  • name (String)

    schema name

  • version (String, nil) (defaults to: nil)

    version

Returns:

  • (String)

    registry key



44
45
46
# File 'lib/synthra/schema_versioning.rb', line 44

def self.registry_key(name, version = nil)
  version ? "#{name}@#{version}" : name
end