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 } }