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

Reply via email to