From f8e95ae12864a5ea8b2eb79234c5cdef526a44aa Mon Sep 17 00:00:00 2001 From: tsmethurst Date: Wed, 31 Mar 2021 20:32:06 +0200 Subject: [PATCH] Add CreateTables func --- internal/apimodule/account/account.go | 24 +++++++++++++++++++++++- internal/apimodule/apimodule.go | 6 +++++- internal/apimodule/app/app.go | 19 +++++++++++++++++++ internal/apimodule/auth/auth.go | 19 +++++++++++++++++++ 4 files changed, 66 insertions(+), 2 deletions(-) diff --git a/internal/apimodule/account/account.go b/internal/apimodule/account/account.go index b747b39..27c8a77 100644 --- a/internal/apimodule/account/account.go +++ b/internal/apimodule/account/account.go @@ -19,13 +19,15 @@ package account import ( + "fmt" "net/http" "github.com/sirupsen/logrus" + "github.com/superseriousbusiness/gotosocial/internal/apimodule" "github.com/superseriousbusiness/gotosocial/internal/config" "github.com/superseriousbusiness/gotosocial/internal/db" + "github.com/superseriousbusiness/gotosocial/internal/db/model" "github.com/superseriousbusiness/gotosocial/internal/media" - "github.com/superseriousbusiness/gotosocial/internal/apimodule" "github.com/superseriousbusiness/gotosocial/internal/oauth" "github.com/superseriousbusiness/gotosocial/internal/router" ) @@ -64,3 +66,23 @@ func (m *accountModule) Route(r router.Router) error { r.AttachHandler(http.MethodPatch, updateCredentialsPath, m.accountUpdateCredentialsPATCHHandler) return nil } + +func (m *accountModule) CreateTables(db db.DB) error { + models := []interface{}{ + &model.User{}, + &model.Account{}, + &model.Follow{}, + &model.FollowRequest{}, + &model.Status{}, + &model.Application{}, + &model.EmailDomainBlock{}, + &model.MediaAttachment{}, + } + + for _, m := range models { + if err := db.CreateTable(m); err != nil { + return fmt.Errorf("error creating table: %s", err) + } + } + return nil +} diff --git a/internal/apimodule/apimodule.go b/internal/apimodule/apimodule.go index a61f649..52275c6 100644 --- a/internal/apimodule/apimodule.go +++ b/internal/apimodule/apimodule.go @@ -19,11 +19,15 @@ // Package apimodule is basically a wrapper for a lot of modules (in subdirectories) that satisfy the ClientAPIModule interface. package apimodule -import "github.com/superseriousbusiness/gotosocial/internal/router" +import ( + "github.com/superseriousbusiness/gotosocial/internal/db" + "github.com/superseriousbusiness/gotosocial/internal/router" +) // ClientAPIModule represents a chunk of code (usually contained in a single package) that adds a set // of functionalities and side effects to a router, by mapping routes and handlers onto it--in other words, a REST API ;) // A ClientAPIMpdule corresponds roughly to one main path of the gotosocial REST api, for example /api/v1/accounts/ or /oauth/ type ClientAPIModule interface { Route(s router.Router) error + CreateTables(db db.DB) error } diff --git a/internal/apimodule/app/app.go b/internal/apimodule/app/app.go index a4be02b..534f4cd 100644 --- a/internal/apimodule/app/app.go +++ b/internal/apimodule/app/app.go @@ -19,11 +19,13 @@ package app import ( + "fmt" "net/http" "github.com/sirupsen/logrus" "github.com/superseriousbusiness/gotosocial/internal/apimodule" "github.com/superseriousbusiness/gotosocial/internal/db" + "github.com/superseriousbusiness/gotosocial/internal/db/model" "github.com/superseriousbusiness/gotosocial/internal/oauth" "github.com/superseriousbusiness/gotosocial/internal/router" ) @@ -50,3 +52,20 @@ func (m *appModule) Route(s router.Router) error { s.AttachHandler(http.MethodPost, appsPath, m.appsPOSTHandler) return nil } + +func (m *appModule) CreateTables(db db.DB) error { + models := []interface{}{ + &oauth.Client{}, + &oauth.Token{}, + &model.User{}, + &model.Account{}, + &model.Application{}, + } + + for _, m := range models { + if err := db.CreateTable(m); err != nil { + return fmt.Errorf("error creating table: %s", err) + } + } + return nil +} diff --git a/internal/apimodule/auth/auth.go b/internal/apimodule/auth/auth.go index 097bbea..3a85a43 100644 --- a/internal/apimodule/auth/auth.go +++ b/internal/apimodule/auth/auth.go @@ -25,11 +25,13 @@ package auth import ( + "fmt" "net/http" "github.com/sirupsen/logrus" "github.com/superseriousbusiness/gotosocial/internal/apimodule" "github.com/superseriousbusiness/gotosocial/internal/db" + "github.com/superseriousbusiness/gotosocial/internal/db/model" "github.com/superseriousbusiness/gotosocial/internal/oauth" "github.com/superseriousbusiness/gotosocial/internal/router" ) @@ -68,3 +70,20 @@ func (m *authModule) Route(s router.Router) error { s.AttachMiddleware(m.oauthTokenMiddleware) return nil } + +func (m *authModule) CreateTables(db db.DB) error { + models := []interface{}{ + &oauth.Client{}, + &oauth.Token{}, + &model.User{}, + &model.Account{}, + &model.Application{}, + } + + for _, m := range models { + if err := db.CreateTable(m); err != nil { + return fmt.Errorf("error creating table: %s", err) + } + } + return nil +}