about summary refs log tree commit diff
path: root/src/db/schema.go
diff options
context:
space:
mode:
authorhanemile <mail@emile.space>2020-07-19 13:15:31 +0200
committerhanemile <mail@emile.space>2020-07-19 13:15:31 +0200
commit50500b9e8eb0b891f598e66801f5dcca55d1186e (patch)
tree5f07d91b90d95cc1634bccdb5a53aaae0d9fff9f /src/db/schema.go
parent0773cb78d1e2ae090602e5c89e7951b16dbeb21c (diff)
src update
Diffstat (limited to 'src/db/schema.go')
-rw-r--r--src/db/schema.go51
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
+}