GSAB
Docs · v0.4.0

Defining a schema

A schema names the tab and declares its fields.

from gsab import Schema, Field, FieldType

schema = Schema("users", [
    Field("id",     FieldType.INTEGER, required=True, unique=True),
    Field("name",   FieldType.STRING,  required=True, max_length=80),
    Field("email",  FieldType.STRING,  pattern=r"[^@]+@[^@]+\.[^@]+"),
    Field("age",    FieldType.INTEGER, min_value=0, max_value=150),
    Field("secret", FieldType.STRING,  encrypted=True),
])

FieldType: STRING, INTEGER, FLOAT, BOOLEAN, DATE, DATETIME, JSON, ENCRYPTED. Values are converted and validated on write and coerced back on read (numbers as numbers, dates as date/datetime, etc.).

Field options: required, unique, default, min_length / max_length, pattern, min_value / max_value, encrypted, and custom validation_rules (each a ValidationRule(condition, error_message)). Validation runs on every write.