store.go 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package teststore
  2. import (
  3. "context"
  4. "fmt"
  5. "testing"
  6. // sqlite driver.
  7. _ "modernc.org/sqlite"
  8. "github.com/usememos/memos/server/profile"
  9. "github.com/usememos/memos/store"
  10. "github.com/usememos/memos/store/db"
  11. "github.com/usememos/memos/test"
  12. )
  13. func NewTestingStore(ctx context.Context, t *testing.T) *store.Store {
  14. profile := test.GetTestingProfile(t)
  15. dbDriver, err := db.NewDBDriver(profile)
  16. if err != nil {
  17. fmt.Printf("failed to create db driver, error: %+v\n", err)
  18. }
  19. resetTestingDB(ctx, profile, dbDriver)
  20. if err := dbDriver.Migrate(ctx); err != nil {
  21. fmt.Printf("failed to migrate db, error: %+v\n", err)
  22. }
  23. store := store.New(dbDriver, profile)
  24. return store
  25. }
  26. func resetTestingDB(ctx context.Context, profile *profile.Profile, dbDriver store.Driver) {
  27. if profile.Driver == "mysql" {
  28. _, err := dbDriver.GetDB().ExecContext(ctx, `
  29. DROP TABLE IF EXISTS migration_history;
  30. DROP TABLE IF EXISTS system_setting;
  31. DROP TABLE IF EXISTS user;
  32. DROP TABLE IF EXISTS user_setting;
  33. DROP TABLE IF EXISTS memo;
  34. DROP TABLE IF EXISTS memo_organizer;
  35. DROP TABLE IF EXISTS memo_relation;
  36. DROP TABLE IF EXISTS resource;
  37. DROP TABLE IF EXISTS tag;
  38. DROP TABLE IF EXISTS activity;
  39. DROP TABLE IF EXISTS storage;
  40. DROP TABLE IF EXISTS idp;
  41. DROP TABLE IF EXISTS inbox;
  42. DROP TABLE IF EXISTS webhook;`)
  43. if err != nil {
  44. fmt.Printf("failed to reset testing db, error: %+v\n", err)
  45. panic(err)
  46. }
  47. } else if profile.Driver == "postgres" {
  48. _, err := dbDriver.GetDB().ExecContext(ctx, `
  49. DROP TABLE IF EXISTS migration_history CASCADE;
  50. DROP TABLE IF EXISTS system_setting CASCADE;
  51. DROP TABLE IF EXISTS "user" CASCADE;
  52. DROP TABLE IF EXISTS user_setting CASCADE;
  53. DROP TABLE IF EXISTS memo CASCADE;
  54. DROP TABLE IF EXISTS memo_organizer CASCADE;
  55. DROP TABLE IF EXISTS memo_relation CASCADE;
  56. DROP TABLE IF EXISTS resource CASCADE;
  57. DROP TABLE IF EXISTS tag CASCADE;
  58. DROP TABLE IF EXISTS activity CASCADE;
  59. DROP TABLE IF EXISTS storage CASCADE;
  60. DROP TABLE IF EXISTS idp CASCADE;
  61. DROP TABLE IF EXISTS inbox CASCADE;
  62. DROP TABLE IF EXISTS webhook CASCADE;`)
  63. if err != nil {
  64. fmt.Printf("failed to reset testing db, error: %+v\n", err)
  65. panic(err)
  66. }
  67. }
  68. }