You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
2.5 KiB
84 lines
2.5 KiB
/* |
|
GoToSocial |
|
Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org |
|
|
|
This program is free software: you can redistribute it and/or modify |
|
it under the terms of the GNU Affero General Public License as published by |
|
the Free Software Foundation, either version 3 of the License, or |
|
(at your option) any later version. |
|
|
|
This program is distributed in the hope that it will be useful, |
|
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
GNU Affero General Public License for more details. |
|
|
|
You should have received a copy of the GNU Affero General Public License |
|
along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
*/ |
|
|
|
package admin |
|
|
|
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/gtsmodel" |
|
"github.com/superseriousbusiness/gotosocial/internal/mastotypes" |
|
"github.com/superseriousbusiness/gotosocial/internal/media" |
|
"github.com/superseriousbusiness/gotosocial/internal/router" |
|
) |
|
|
|
const ( |
|
basePath = "/api/v1/admin" |
|
emojiPath = basePath + "/custom_emojis" |
|
) |
|
|
|
type adminModule struct { |
|
config *config.Config |
|
db db.DB |
|
mediaHandler media.MediaHandler |
|
mastoConverter mastotypes.Converter |
|
log *logrus.Logger |
|
} |
|
|
|
// New returns a new account module |
|
func New(config *config.Config, db db.DB, mediaHandler media.MediaHandler, mastoConverter mastotypes.Converter, log *logrus.Logger) apimodule.ClientAPIModule { |
|
return &adminModule{ |
|
config: config, |
|
db: db, |
|
mediaHandler: mediaHandler, |
|
mastoConverter: mastoConverter, |
|
log: log, |
|
} |
|
} |
|
|
|
// Route attaches all routes from this module to the given router |
|
func (m *adminModule) Route(r router.Router) error { |
|
r.AttachHandler(http.MethodPost, emojiPath, m.emojiCreatePOSTHandler) |
|
return nil |
|
} |
|
|
|
func (m *adminModule) CreateTables(db db.DB) error { |
|
models := []interface{}{ |
|
>smodel.User{}, |
|
>smodel.Account{}, |
|
>smodel.Follow{}, |
|
>smodel.FollowRequest{}, |
|
>smodel.Status{}, |
|
>smodel.Application{}, |
|
>smodel.EmailDomainBlock{}, |
|
>smodel.MediaAttachment{}, |
|
>smodel.Emoji{}, |
|
} |
|
|
|
for _, m := range models { |
|
if err := db.CreateTable(m); err != nil { |
|
return fmt.Errorf("error creating table: %s", err) |
|
} |
|
} |
|
return nil |
|
}
|
|
|