-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathall.go
62 lines (55 loc) · 1.83 KB
/
all.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package sql
import (
"github.com/samber/lo"
"projectforge.dev/projectforge/app/file"
"projectforge.dev/projectforge/app/project/export/enum"
"projectforge.dev/projectforge/app/project/export/files/helper"
"projectforge.dev/projectforge/app/project/export/golang"
"projectforge.dev/projectforge/app/project/export/model"
)
func MigrationAll(models model.Models, enums enum.Enums, addHeader bool, linebreak string) (*file.File, error) {
g := golang.NewGoTemplate([]string{"queries", "ddl"}, "all.sql")
g.AddBlocks(sqlDropAll(models, enums), sqlCreateAll(models, enums))
return g.Render(addHeader, linebreak)
}
func sqlDropAll(models model.Models, enums enum.Enums) *golang.Block {
ret := golang.NewBlock("SQLDropAll", "sql")
ret.W(sqlFunc("DropAll"))
for i := len(models) - 1; i >= 0; i-- {
ret.W(sqlCall(models[i].Proper() + helper.TextDrop))
}
if len(enums) > 1 {
ret.W(sqlCall("TypesDrop"))
}
ret.W(sqlEnd())
return ret
}
func sqlCreateAll(models model.Models, enums enum.Enums) *golang.Block {
ret := golang.NewBlock("SQLCreateAll", "sql")
ret.W(sqlFunc("CreateAll"))
if len(enums) > 0 {
ret.W(sqlCall("TypesCreate"))
}
lo.ForEach(models, func(m *model.Model, _ int) {
ret.W(helper.TextSQLComment+"{%%%%= %sCreate() %%%%}", m.Proper())
})
ret.W(sqlEnd())
return ret
}
func SeedDataAll(models model.Models, linebreak string) (*file.File, error) {
ordered := models.Sorted()
g := golang.NewGoTemplate([]string{"queries", "seeddata"}, "all.sql")
g.AddBlocks(sqlSeedAll(ordered))
return g.Render(false, linebreak)
}
func sqlSeedAll(models model.Models) *golang.Block {
ret := golang.NewBlock("SQLSeedDataAll", "sql")
ret.W(sqlFunc("SeedDataAll"))
lo.ForEach(models, func(m *model.Model, _ int) {
if len(m.SeedData) > 0 {
ret.W(helper.TextSQLComment+"{%%%%= %sSeedData() %%%%}", m.Proper())
}
})
ret.W(sqlEnd())
return ret
}