db.go 885 B

12345678910111213141516171819202122232425262728293031323334
  1. package db
  2. import (
  3. "github.com/pkg/errors"
  4. "github.com/usememos/memos/server/profile"
  5. "github.com/usememos/memos/store"
  6. "github.com/usememos/memos/store/db/mysql"
  7. "github.com/usememos/memos/store/db/sqlite"
  8. )
  9. // NewDBDriver creates new db driver based on profile.
  10. func NewDBDriver(profile *profile.Profile) (store.Driver, error) {
  11. var driver store.Driver
  12. var err error
  13. // As mysql driver is not fully implemented, we use sqlite for now in prod mode.
  14. if profile.Mode == "prod" && profile.Driver != "sqlite" {
  15. return nil, errors.New("Only SQLite is supported in prod mode")
  16. }
  17. switch profile.Driver {
  18. case "sqlite":
  19. driver, err = sqlite.NewDB(profile)
  20. case "mysql":
  21. driver, err = mysql.NewDB(profile)
  22. default:
  23. return nil, errors.New("unknown db driver")
  24. }
  25. if err != nil {
  26. return nil, errors.Wrap(err, "failed to create db driver")
  27. }
  28. return driver, nil
  29. }