postgres.go 888 B

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