fix(bun): support extra generated model fields

This commit is contained in:
Hermes Agent
2026-07-09 05:50:33 +02:00
parent 7805d9b6f0
commit 47b77763cb
7 changed files with 359 additions and 2 deletions
+43
View File
@@ -51,6 +51,43 @@ func (w *Writer) WriteDatabase(db *models.Database) error {
return w.writeSingleFile(db)
}
// addExtraFields appends user-defined extra fields to matching models.
// Fields may be scoped by target_table (table name, schema.table name, or model name).
// Unscoped fields apply to every generated model.
func (w *Writer) addExtraFields(templateData *TemplateData) {
extraFields := LoadExtraFieldsFromMetadata(w.options.Metadata)
if len(extraFields) == 0 {
return
}
for _, model := range templateData.Models {
for _, ef := range extraFields {
if !extraFieldMatchesModel(ef, model) {
continue
}
fieldData := &FieldData{
Name: resolveFieldNameCollision(ef.Name),
Type: ef.Type,
BunTag: ef.BunTag,
JSONTag: ef.JSONTag,
Comment: ef.Comment,
}
model.ExtraFields = append(model.ExtraFields, fieldData)
}
}
}
func extraFieldMatchesModel(field ExtraFieldConfig, model *ModelData) bool {
if field.TargetTable == "" {
return true
}
return field.TargetTable == model.TableNameOnly ||
field.TargetTable == model.TableName ||
field.TargetTable == model.Name
}
// WriteSchema writes a schema as Bun models
func (w *Writer) WriteSchema(schema *models.Schema) error {
// Create a temporary database with just this schema
@@ -107,6 +144,9 @@ func (w *Writer) writeSingleFile(db *models.Database) error {
templateData.AddImport("\"fmt\"")
}
// Apply extra fields from generator config (issue #4)
w.addExtraFields(templateData)
// Finalize imports
templateData.FinalizeImports()
@@ -200,6 +240,9 @@ func (w *Writer) writeMultiFile(db *models.Database) error {
templateData.AddImport("\"fmt\"")
}
// Apply extra fields from generator config (issue #4)
w.addExtraFields(templateData)
// Finalize imports
templateData.FinalizeImports()