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.
43 lines
1.2 KiB
43 lines
1.2 KiB
package database
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"git.aiterp.net/rpdata/api/database/postgres"
|
|
|
|
"git.aiterp.net/rpdata/api/database/mongodb"
|
|
"git.aiterp.net/rpdata/api/internal/config"
|
|
"git.aiterp.net/rpdata/api/repositories"
|
|
)
|
|
|
|
// ErrDriverUnrecognized is returned if the driver is not recognized
|
|
var ErrDriverUnrecognized = errors.New("driver not recognized, check installed version or your configuration")
|
|
|
|
type Database interface {
|
|
Changes() repositories.ChangeRepository
|
|
Channels() repositories.ChannelRepository
|
|
Characters() repositories.CharacterRepository
|
|
Tags() repositories.TagRepository
|
|
Logs() repositories.LogRepository
|
|
Posts() repositories.PostRepository
|
|
Stories() repositories.StoryRepository
|
|
Chapters() repositories.ChapterRepository
|
|
Comments() repositories.CommentRepository
|
|
Keys() repositories.KeyRepository
|
|
Users() repositories.UserRepository
|
|
Files() repositories.FileRepository
|
|
|
|
Close(ctx context.Context) error
|
|
}
|
|
|
|
// Init sets up the database.
|
|
func Init(config config.Database) (Database, error) {
|
|
switch config.Driver {
|
|
case "mongo", "mgo", "mongodb":
|
|
return mongodb.Init(config)
|
|
case "postgres", "psql", "pq", "postgressql":
|
|
return postgres.Connect(config)
|
|
default:
|
|
return nil, ErrDriverUnrecognized
|
|
}
|
|
}
|