gnormal / gnorm

A database-first code generator for any language
https://gnorm.org
Other
485 stars 40 forks source link

Auto Generated Column Support #52

Open daniel-reed opened 6 years ago

daniel-reed commented 6 years ago

Add IsAutoGenerated to Column

xserve98 commented 6 years ago
func Insert(db {{$rootPkg}}.DB, r *Row) error {
    const sqlstr = `INSERT INTO {{ $table }} (
            {{$insertCols}}
        ) VALUES (
            {{ template "values" $numNonPKs }}
        ) RETURNING id;`

    err := db.QueryRow(sqlstr, {{join  ((.Table.Columns.Names.Except .Table.PrimaryKeys.Names).Sprintf "r.%s") ", "}}).Scan( {{join  (.Table.PrimaryKeys.Names.Sprintf "&r.%s") ", "}})
    return errors.Wrap(err, "insert {{.Table.Name}}")
}

Is there a better solution? id SERIAL PRIMARY KEY

xserve98 commented 6 years ago
// Insert inserts the row into the database.
func Insert(db models.DB, r *Row) error {
        const sqlstr = `INSERT INTO sys_user (
            username, password, salt, avatar, created_at, updated_at
        ) VALUES (
            $1, $2, $3, $4, $5, $6
        ) RETURNING id;`

    err := db.QueryRow(sqlstr, r.Username, r.Password, r.Salt, r.Avatar, r.CreatedAt,r.UpdatedAt).Scan(&r.ID)
    return errors.Wrap(err, "insert SysUser")
}