GraphQL API and utilities for the rpdata project
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.
|
|
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 } }
|