postgres.go 1003 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package postgres
  2. import (
  3. "context"
  4. "database/sql"
  5. "log"
  6. // Import the PostgreSQL driver.
  7. _ "github.com/lib/pq"
  8. "github.com/pkg/errors"
  9. "github.com/usememos/memos/server/profile"
  10. "github.com/usememos/memos/store"
  11. )
  12. type DB struct {
  13. db *sql.DB
  14. profile *profile.Profile
  15. // Add any other fields as needed
  16. }
  17. func NewDB(profile *profile.Profile) (store.Driver, error) {
  18. if profile == nil {
  19. return nil, errors.New("profile is nil")
  20. }
  21. // Open the PostgreSQL connection
  22. db, err := sql.Open("postgres", profile.DSN)
  23. if err != nil {
  24. log.Printf("Failed to open database: %s", err)
  25. return nil, errors.Wrapf(err, "failed to open database: %s", profile.DSN)
  26. }
  27. var driver store.Driver = &DB{
  28. db: db,
  29. profile: profile,
  30. }
  31. // Return the DB struct
  32. return driver, nil
  33. }
  34. func (d *DB) GetDB() *sql.DB {
  35. return d.db
  36. }
  37. func (*DB) GetCurrentDBSize(context.Context) (int64, error) {
  38. return 0, errors.New("unimplemented")
  39. }
  40. func (d *DB) Close() error {
  41. return d.db.Close()
  42. }