Here's simpler way to write the models in Nim:
import schema_types
proc setupModels*() =
var model: Model
model.name = "Account User"
model.description = "Users by account"
model.tableOptions.namingCase = snakeCase
var
idField: Field
accountIdField: Field
nameField: Field
emailField: Field
idField.name = "Id"
idField.fieldType = stringType
idField.constraints = @[
autoGenerateConstraint,
notNullConstraint
]
idField.autoGenerate = ulidGenerator
accountIdField.name = "Account Id"
accountIdField.fieldType = stringType
accountIdField.constraints = @[ notNullConstraint ]
accountIdField.fkReference.model = "Account"
accountIdField.fkReference.refCol = "Id"
nameField.name = "Name"
nameField.fieldType = stringType
nameField.constraints = @[ notNullConstraint ]
emailField.name = "Email"
emailField.fieldType = stringType
emailField.constraints = @[ notNullConstraint ]
model.fields = @[
idField,
accountIdField,
nameField,
emailField
]
var emailIndex: Index
emailIndex.name = "Account User Ix 1"
emailIndex.columns = @[ "Email" ]
model.indexes = @[ emailIndex ]
echo $model
# Main
setupModels()
Run