github.com/go-courier/sqlx/v2@v2.23.13/helpers.go (about)

     1  package sqlx
     2  
     3  import (
     4  	"github.com/go-courier/sqlx/v2/builder"
     5  )
     6  
     7  func InsertToDB(db DBExecutor, model builder.Model, zeroFields []string, additions ...builder.Addition) builder.SqlExpr {
     8  	table := db.T(model)
     9  	cols, vals := table.ColumnsAndValuesByFieldValues(FieldValuesFromModel(table, model, zeroFields...))
    10  	return builder.Insert().Into(table, additions...).Values(cols, vals...)
    11  }
    12  
    13  func AsAssignments(db DBExecutor, model builder.Model, zeroFields ...string) builder.Assignments {
    14  	table := db.T(model)
    15  	return table.AssignmentsByFieldValues(FieldValuesFromModel(table, model, zeroFields...))
    16  }
    17  
    18  func FieldValuesFromModel(table *builder.Table, model builder.Model, zeroFields ...string) builder.FieldValues {
    19  	fieldValues := builder.FieldValuesFromStructByNonZero(model, zeroFields...)
    20  	if autoIncrementCol := table.AutoIncrement(); autoIncrementCol != nil {
    21  		delete(fieldValues, autoIncrementCol.FieldName)
    22  	}
    23  	return fieldValues
    24  }