diff options
Diffstat (limited to 'storage/views.go')
| -rw-r--r-- | storage/views.go | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/storage/views.go b/storage/views.go new file mode 100644 index 0000000..6808f11 --- /dev/null +++ b/storage/views.go @@ -0,0 +1,41 @@ +package storage + +import ( + "embed" + _ "embed" + "fmt" + "io/fs" + "path/filepath" + "strings" + "sts2stats/spool" +) + +//go:embed views +var data embed.FS + +func SetupViews() error { + err := fs.WalkDir(data, "views", func(path string, d fs.DirEntry, err error) error { + if d.IsDir() { + return nil + } + ext := filepath.Ext(path) + name := strings.TrimSuffix(strings.Join(strings.Split(path, "/")[1:], "_"), ext) + content, err := fs.ReadFile(data, path) + if err != nil { + spool.Warn("view %s: %s\n", name, err) + return nil + } + err = AddView(name, string(content)) + if err != nil { + spool.Warn("view %s: %s\n", name, err) + return nil + } + return nil + }) + return err +} + +func AddView(name string, selectQuery string) error { + _, err := conn.Exec(fmt.Sprintf("CREATE OR REPLACE VIEW _%s AS %s;", name, selectQuery)) + return err +} |
