From d57274561363c1646c5aa6e5304c8a9f622e1d11 Mon Sep 17 00:00:00 2001 From: ~wispem-wantex Date: Sun, 12 Jul 2026 13:19:20 -0700 Subject: [PATCH] codegen: don't skip created_at auto-timestamp for 'without rowid' tables --- pkg/codegen/modelgenerate/generate_model.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/pkg/codegen/modelgenerate/generate_model.go b/pkg/codegen/modelgenerate/generate_model.go index 944fe7a..37acb5f 100644 --- a/pkg/codegen/modelgenerate/generate_model.go +++ b/pkg/codegen/modelgenerate/generate_model.go @@ -386,6 +386,24 @@ func GenerateSaveItemFunc(tbl schema.Table) *ast.FuncDecl { } if tbl.IsWithoutRowid { + if hasCreatedAt { + // Auto-timestamps: created_at. Don't overwrite existing timestamps (e.g., data import / migrations) + ret = append(ret, &ast.IfStmt{ + Cond: &ast.CallExpr{Fun: &ast.SelectorExpr{ + X: &ast.SelectorExpr{X: ast.NewIdent(tbl.VarName), Sel: ast.NewIdent("CreatedAt")}, + Sel: ast.NewIdent("IsZero"), + }}, + Body: &ast.BlockStmt{ + List: []ast.Stmt{ + &ast.AssignStmt{ + Lhs: []ast.Expr{&ast.SelectorExpr{X: ast.NewIdent(tbl.VarName), Sel: ast.NewIdent("CreatedAt")}}, + Tok: token.ASSIGN, + Rhs: []ast.Expr{&ast.CallExpr{Fun: ast.NewIdent("TimestampNow"), Args: []ast.Expr{}}}, + }, + }, + }, + }) + } ret = append(ret, namedExecStmt(upsertStmt)...) ret = append(ret, PanicIfRowsAffected(tbl)) } else {