Skip to content
Snippets Groups Projects
Commit e3e96441 authored by Sigmund, Dominik's avatar Sigmund, Dominik
Browse files

Added dbml addtion

parent 70699ed5
No related branches found
No related tags found
No related merge requests found
Pipeline #82670 failed
......@@ -67,7 +67,6 @@ func Add(tableName string, model string) {
/*
- Generate Test Data for the new table if wanted
- Add Table to import-sql.sh
- Add Description to the DBML file
- Add Description and mermaid and DBML to the README.md file
- Add Test to gitlab-ci.yml
- Add to CHANGELOG.md
......@@ -90,6 +89,12 @@ func Add(tableName string, model string) {
// Create the table file under sql directory
createTableFile(projectDir, tableName, config.DbType, tableModel)
// Append table description to database.dbml
if err := appendToDBMLFile(projectDir, tableName, tableModel); err != nil {
fmt.Printf("Error appending to database.dbml: %v\n", err)
} else {
fmt.Printf("Appended table '%s' to database.dbml\n", tableName)
}
fmt.Printf("Added new table '%s' to the project\n", slug)
}
......@@ -241,6 +246,54 @@ func generatePostgreSQLSQL(file *os.File, tableName string, tableModel TableMode
return err
}
func generateDBML(tableName string, tableModel TableModel) string {
var dbml strings.Builder
dbml.WriteString(fmt.Sprintf("Table %s {\n", tableName))
for _, field := range tableModel.Fields {
dbml.WriteString(fmt.Sprintf(" %s %s", field.Name, field.Type))
if field.PrimaryKey {
dbml.WriteString(" [pk]")
}
if field.Unique {
dbml.WriteString(" [unique]")
}
if field.NotNull {
dbml.WriteString(" [not null]")
}
if field.AutoIncrement {
dbml.WriteString(" [autoincrement]")
}
if field.DefaultValue != nil {
dbml.WriteString(fmt.Sprintf(" [default: '%v']", field.DefaultValue))
}
dbml.WriteString("\n")
}
dbml.WriteString("}\n")
return dbml.String()
}
func appendToDBMLFile(projectDir, tableName string, tableModel TableModel) error {
dbmlFilePath := filepath.Join(projectDir, "database.dbml")
file, err := os.OpenFile(dbmlFilePath, os.O_APPEND|os.O_WRONLY, os.ModeAppend)
if err != nil {
return fmt.Errorf("error opening database.dbml file: %v", err)
}
defer file.Close()
dbmlContent := generateDBML(tableName, tableModel)
if _, err := file.WriteString(dbmlContent); err != nil {
return fmt.Errorf("error writing to database.dbml file: %v", err)
}
return nil
}
func validateModel(model TableModel) error {
fieldNames := make(map[string]bool)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment