conventions for new columns
Be sure all database fields are snake_case Be sure all sub structs that are in jsonb collumns are also snake_case Be sure to not use booleans for fields, use smallint 0/1
Critical: Struct tags control database migrations and constraints. Include all relevant tags:
Name *fields.StringField `column:"name" type:"text" default:"":"false"`
Email *fields.StringField `column:"email" type:"text" default:"" unique:"true"`
Age *fields.IntField `column:"age" type:"integer" default:"0" null:"true"`
Status *fields.IntConstantField[Status] `column:"status" type:"smallint" default:"1"`
Settings *fields.StructField[*Settings] `column:"settings" type:"jsonb" default:"{}"`
column:"name" – Database column name (required)type:"text|jsonb|smallint|integer|uuid|date|datetime|bigint" – Database column type (required) note that all 'boolean' type things should be a smallint 0/1default:"value/null" – Default value for columnnull:"true" – Whether column allows NULL, dont add if not nullableunique:"true" – Whether column has unique constraint, dont add if not uniqueindex:"true" – Whether to create index on column, dont add if not indexedpublic:"view|edit" - For public endpoints, determines whether or not the field is returned (view or edit) or on updates if its editable by the user (edit), dont add if not public facingdefault:"null" null:"true"StringField – Text/string columnsUUIDField – UUID columnsIntField – Integer columns / Bool fields with smallint 0/1 valuesDecimalField – Decimal/numeric columnsIntConstantField[T] – Enum/constant fieldsStructField[T] – JSONB/struct columnsAll fields provide .Set(val) and .Get() methods. Struct fields have a .GetI() for when errors do not need to be checked