diff options
author | hanemile <mail@emile.space> | 2020-07-19 13:15:31 +0200 |
---|---|---|
committer | hanemile <mail@emile.space> | 2020-07-19 13:15:31 +0200 |
commit | 50500b9e8eb0b891f598e66801f5dcca55d1186e (patch) | |
tree | 5f07d91b90d95cc1634bccdb5a53aaae0d9fff9f /src/db/schema.go | |
parent | 0773cb78d1e2ae090602e5c89e7951b16dbeb21c (diff) |
src update
Diffstat (limited to 'src/db/schema.go')
-rw-r--r-- | src/db/schema.go | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/db/schema.go b/src/db/schema.go new file mode 100644 index 0000000..9d7e31e --- /dev/null +++ b/src/db/schema.go @@ -0,0 +1,51 @@ +package db + +import ( + "git.darknebu.la/chaosdorf/freitagsfoo/src/structs" + pg "github.com/go-pg/pg/v9" + orm "github.com/go-pg/pg/v9/orm" + "github.com/sirupsen/logrus" +) + +// CreateSchema creates the defined schemas in the database +func CreateSchema(db *pg.DB) error { + // define the models + models := []interface{}{ + (*structs.Talk)(nil), + } + + // create a table for each model defined above + for i, model := range models { + + err := db.CreateTable(model, &orm.CreateTableOptions{ + IfNotExists: true, + }) + if err != nil { + return err + } + logrus.Tracef("\t Created the %T table", models[i]) + } + + return nil +} + +// DeleteAllTables deletes all tables in the given database +func DeleteAllTables(db *pg.DB) error { + // define the models + models := []interface{}{ + (*structs.Talk)(nil), + } + + // delete all models + for i, model := range models { + err := db.DropTable(model, &orm.DropTableOptions{ + IfExists: true, + }) + if err != nil { + return err + } + logrus.Tracef("\t Deleted the %T table", models[i]) + } + + return nil +} |