diff --git a/pkg/writers/bun/template_data.go b/pkg/writers/bun/template_data.go index ac0c756..b5deca5 100644 --- a/pkg/writers/bun/template_data.go +++ b/pkg/writers/bun/template_data.go @@ -6,7 +6,6 @@ import ( "sort" "strings" - "git.warky.dev/wdevs/relspecgo/pkg/buildinfo" "git.warky.dev/wdevs/relspecgo/pkg/models" "git.warky.dev/wdevs/relspecgo/pkg/writers" ) @@ -14,7 +13,6 @@ import ( // TemplateData represents the data passed to the template for code generation type TemplateData struct { PackageName string - GeneratedBy string Imports []string Models []*ModelData Config *MethodConfig @@ -167,7 +165,6 @@ func NewTemplateData(packageName string, config *MethodConfig) *TemplateData { return &TemplateData{ PackageName: packageName, - GeneratedBy: buildinfo.GeneratedComment(), Imports: make([]string, 0), Models: make([]*ModelData, 0), Config: config, diff --git a/pkg/writers/bun/templates.go b/pkg/writers/bun/templates.go index 0c2ba6e..dbea7f6 100644 --- a/pkg/writers/bun/templates.go +++ b/pkg/writers/bun/templates.go @@ -7,8 +7,7 @@ import ( // modelTemplate defines the template for generating Bun models const modelTemplate = `// Code generated by relspecgo. DO NOT EDIT. -{{if .GeneratedBy}}// {{.GeneratedBy}} -{{end}}package {{.PackageName}} +package {{.PackageName}} {{if .Imports -}} import ( diff --git a/pkg/writers/bun/writer_test.go b/pkg/writers/bun/writer_test.go index f7dec21..3725fc0 100644 --- a/pkg/writers/bun/writer_test.go +++ b/pkg/writers/bun/writer_test.go @@ -8,7 +8,6 @@ import ( "strings" "testing" - "git.warky.dev/wdevs/relspecgo/pkg/buildinfo" "git.warky.dev/wdevs/relspecgo/pkg/models" "git.warky.dev/wdevs/relspecgo/pkg/writers" ) @@ -121,7 +120,7 @@ func TestWriter_WriteTable_MultilineDescriptionProducesValidGo(t *testing.T) { } } -func TestWriter_WriteTable_EmbedsRelspecVersionHeader(t *testing.T) { +func TestWriter_WriteTable_HeaderIsVersionFree(t *testing.T) { table := models.InitTable("users", "public") table.Columns["id"] = &models.Column{Name: "id", Type: "bigint", IsPrimaryKey: true, NotNull: true, Sequence: 1} @@ -141,19 +140,14 @@ func TestWriter_WriteTable_EmbedsRelspecVersionHeader(t *testing.T) { t.Fatalf("generated code is invalid Go: %v\n%s", err, src) } - wantHeader := "// " + buildinfo.GeneratedComment() - if !strings.Contains(src, wantHeader) { - t.Errorf("generated code missing RelSpec version header %q\n%s", wantHeader, src) + // Output must be reproducible: no version or build date in the header. + if strings.Contains(src, "(built: ") || strings.Contains(src, "RelSpec ") { + t.Errorf("generated code still carries a version header\n%s", src) } - // The provenance comment must sit between the "Code generated" marker and the package clause. - genIdx := strings.Index(src, "// Code generated by relspecgo. DO NOT EDIT.") - hdrIdx := strings.Index(src, wantHeader) - pkgIdx := strings.Index(src, "package models") - if genIdx < 0 || hdrIdx < 0 || pkgIdx < 0 || !(genIdx < hdrIdx && hdrIdx < pkgIdx) { - t.Errorf("RelSpec version header is misplaced (gen=%d hdr=%d pkg=%d)\n%s", genIdx, hdrIdx, pkgIdx, src) - } - if !strings.Contains(wantHeader, "RelSpec ") || !strings.Contains(wantHeader, "(built: ") { - t.Errorf("version header not in expected 'RelSpec (built: )' form: %q", wantHeader) + // The "Code generated" marker must sit directly above the package clause. + want := "// Code generated by relspecgo. DO NOT EDIT.\npackage models" + if !strings.Contains(src, want) { + t.Errorf("header not immediately followed by package clause\n%s", src) } } diff --git a/pkg/writers/drizzle/template_data.go b/pkg/writers/drizzle/template_data.go index 4468c38..060e4cf 100644 --- a/pkg/writers/drizzle/template_data.go +++ b/pkg/writers/drizzle/template_data.go @@ -4,16 +4,14 @@ import ( "sort" "strings" - "git.warky.dev/wdevs/relspecgo/pkg/buildinfo" "git.warky.dev/wdevs/relspecgo/pkg/models" ) // TemplateData represents the data passed to the template for code generation type TemplateData struct { - GeneratedBy string - Imports []string - Enums []*EnumData - Tables []*TableData + Imports []string + Enums []*EnumData + Tables []*TableData } // EnumData represents an enum in the schema @@ -61,10 +59,9 @@ type IndexData struct { // NewTemplateData creates a new TemplateData func NewTemplateData() *TemplateData { return &TemplateData{ - GeneratedBy: buildinfo.GeneratedComment(), - Imports: make([]string, 0), - Enums: make([]*EnumData, 0), - Tables: make([]*TableData, 0), + Imports: make([]string, 0), + Enums: make([]*EnumData, 0), + Tables: make([]*TableData, 0), } } diff --git a/pkg/writers/drizzle/templates.go b/pkg/writers/drizzle/templates.go index 9405936..6cc0c3a 100644 --- a/pkg/writers/drizzle/templates.go +++ b/pkg/writers/drizzle/templates.go @@ -7,8 +7,7 @@ import ( // schemaTemplate defines the template for generating Drizzle schemas const schemaTemplate = `// Code generated by relspecgo. DO NOT EDIT. -{{if .GeneratedBy}}// {{.GeneratedBy}} -{{end}}{{range .Imports}}{{.}} +{{range .Imports}}{{.}} {{end}} {{if .Enums}} // Enums diff --git a/pkg/writers/gorm/template_data.go b/pkg/writers/gorm/template_data.go index 444bfaa..6f6b9ef 100644 --- a/pkg/writers/gorm/template_data.go +++ b/pkg/writers/gorm/template_data.go @@ -4,7 +4,6 @@ import ( "sort" "strings" - "git.warky.dev/wdevs/relspecgo/pkg/buildinfo" "git.warky.dev/wdevs/relspecgo/pkg/models" "git.warky.dev/wdevs/relspecgo/pkg/writers" ) @@ -12,7 +11,6 @@ import ( // TemplateData represents the data passed to the template for code generation type TemplateData struct { PackageName string - GeneratedBy string Imports []string Models []*ModelData Config *MethodConfig @@ -81,7 +79,6 @@ func NewTemplateData(packageName string, config *MethodConfig) *TemplateData { return &TemplateData{ PackageName: packageName, - GeneratedBy: buildinfo.GeneratedComment(), Imports: make([]string, 0), Models: make([]*ModelData, 0), Config: config, diff --git a/pkg/writers/gorm/templates.go b/pkg/writers/gorm/templates.go index 68c0cdd..b337d40 100644 --- a/pkg/writers/gorm/templates.go +++ b/pkg/writers/gorm/templates.go @@ -7,8 +7,7 @@ import ( // modelTemplate defines the template for generating GORM models const modelTemplate = `// Code generated by relspecgo. DO NOT EDIT. -{{if .GeneratedBy}}// {{.GeneratedBy}} -{{end}}package {{.PackageName}} +package {{.PackageName}} {{if .Imports -}} import ( diff --git a/pkg/writers/mssql/writer.go b/pkg/writers/mssql/writer.go index be691b8..af39bf0 100644 --- a/pkg/writers/mssql/writer.go +++ b/pkg/writers/mssql/writer.go @@ -11,7 +11,6 @@ import ( _ "github.com/microsoft/go-mssqldb" // MSSQL driver - "git.warky.dev/wdevs/relspecgo/pkg/buildinfo" "git.warky.dev/wdevs/relspecgo/pkg/models" "git.warky.dev/wdevs/relspecgo/pkg/mssql" "git.warky.dev/wdevs/relspecgo/pkg/writers" @@ -69,7 +68,7 @@ func (w *Writer) WriteDatabase(db *models.Database) error { // Write header comment fmt.Fprintf(w.writer, "-- MSSQL Database Schema\n") fmt.Fprintf(w.writer, "-- Database: %s\n", db.Name) - fmt.Fprintf(w.writer, "-- Generated by %s\n\n", buildinfo.GeneratedComment()) + fmt.Fprintf(w.writer, "-- Generated by RelSpec\n\n") // Process each schema in the database for _, schema := range db.Schemas { @@ -478,7 +477,7 @@ func (w *Writer) executeDatabaseSQL(db *models.Database, connString string) erro statements := []string{} statements = append(statements, "-- MSSQL Database Schema") statements = append(statements, fmt.Sprintf("-- Database: %s", db.Name)) - statements = append(statements, "-- Generated by "+buildinfo.GeneratedComment()) + statements = append(statements, "-- Generated by RelSpec") for _, schema := range db.Schemas { if err := w.generateSchemaStatements(schema, &statements); err != nil { diff --git a/pkg/writers/pgsql/migration_writer.go b/pkg/writers/pgsql/migration_writer.go index 7316cb4..5fc3f7d 100644 --- a/pkg/writers/pgsql/migration_writer.go +++ b/pkg/writers/pgsql/migration_writer.go @@ -7,7 +7,6 @@ import ( "sort" "strings" - "git.warky.dev/wdevs/relspecgo/pkg/buildinfo" "git.warky.dev/wdevs/relspecgo/pkg/models" "git.warky.dev/wdevs/relspecgo/pkg/pgsql" "git.warky.dev/wdevs/relspecgo/pkg/writers" @@ -144,7 +143,7 @@ func (w *MigrationWriter) WriteMigration(model, current *models.Database) error // Write header fmt.Fprintf(w.writer, "-- PostgreSQL Migration Script\n") - fmt.Fprintf(w.writer, "-- Generated by %s\n", buildinfo.GeneratedComment()) + fmt.Fprintf(w.writer, "-- Generated by RelSpec\n") fmt.Fprintf(w.writer, "-- Source: %s -> %s\n", current.Name, model.Name) if w.options.ContinueOnError { fmt.Fprintf(w.writer, "\\set ON_ERROR_STOP off\n") diff --git a/pkg/writers/pgsql/writer.go b/pkg/writers/pgsql/writer.go index 87c4aba..bcdeb7f 100644 --- a/pkg/writers/pgsql/writer.go +++ b/pkg/writers/pgsql/writer.go @@ -12,7 +12,6 @@ import ( "sync" "time" - "git.warky.dev/wdevs/relspecgo/pkg/buildinfo" "git.warky.dev/wdevs/relspecgo/pkg/models" "git.warky.dev/wdevs/relspecgo/pkg/pgsql" "git.warky.dev/wdevs/relspecgo/pkg/writers" @@ -102,7 +101,7 @@ func (w *Writer) WriteDatabase(db *models.Database) error { // Write header comment fmt.Fprintf(w.writer, "-- PostgreSQL Database Schema\n") fmt.Fprintf(w.writer, "-- Database: %s\n", db.Name) - fmt.Fprintf(w.writer, "-- Generated by %s\n", buildinfo.GeneratedComment()) + fmt.Fprintf(w.writer, "-- Generated by RelSpec\n") if w.options.ContinueOnError { fmt.Fprintf(w.writer, "\\set ON_ERROR_STOP off\n") } @@ -126,7 +125,7 @@ func (w *Writer) GenerateDatabaseStatements(db *models.Database) ([]string, erro // Add header comment statements = append(statements, "-- PostgreSQL Database Schema") statements = append(statements, fmt.Sprintf("-- Database: %s", db.Name)) - statements = append(statements, "-- Generated by "+buildinfo.GeneratedComment()) + statements = append(statements, "-- Generated by RelSpec") // Process each schema in the database for _, schema := range db.Schemas { @@ -570,7 +569,7 @@ func (w *Writer) GenerateAddColumnsForDatabase(db *models.Database) ([]string, e statements = append(statements, "-- Add missing columns to existing tables") statements = append(statements, fmt.Sprintf("-- Database: %s", db.Name)) - statements = append(statements, "-- Generated by "+buildinfo.GeneratedComment()) + statements = append(statements, "-- Generated by RelSpec") for _, schema := range db.Schemas { schemaStatements, err := w.GenerateAddColumnStatements(schema) diff --git a/pkg/writers/sqlite/writer.go b/pkg/writers/sqlite/writer.go index 01b1c79..3e93663 100644 --- a/pkg/writers/sqlite/writer.go +++ b/pkg/writers/sqlite/writer.go @@ -10,7 +10,6 @@ import ( _ "modernc.org/sqlite" // SQLite driver - "git.warky.dev/wdevs/relspecgo/pkg/buildinfo" "git.warky.dev/wdevs/relspecgo/pkg/models" "git.warky.dev/wdevs/relspecgo/pkg/writers" ) @@ -73,7 +72,7 @@ func (w *Writer) writeContent(db *models.Database) error { // Write header comment fmt.Fprintf(w.writer, "-- SQLite Database Schema\n") fmt.Fprintf(w.writer, "-- Database: %s\n", db.Name) - fmt.Fprintf(w.writer, "-- Generated by %s\n", buildinfo.GeneratedComment()) + fmt.Fprintf(w.writer, "-- Generated by RelSpec\n") fmt.Fprintf(w.writer, "-- Note: SQLite has no schema concept; non-default schema names are flattened into table name prefixes (e.g., auth.sessions -> auth_sessions)\n\n") // Enable foreign keys