client.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package dbstore
  2. import (
  3. "fmt"
  4. "git.linuxforward.com/byop/byop-engine/dbmanager"
  5. "git.linuxforward.com/byop/byop-engine/models"
  6. )
  7. type ClientStore struct {
  8. dbConn dbmanager.DbManager
  9. }
  10. // NewClientStore creates a new ClientStore
  11. func NewClientStore(dbConn dbmanager.DbManager) *ClientStore {
  12. return &ClientStore{
  13. dbConn: dbConn,
  14. }
  15. }
  16. func (cs *ClientStore) CreateTable() error {
  17. query := `
  18. CREATE TABLE IF NOT EXISTS clients (
  19. id TEXT PRIMARY KEY,
  20. data TEXT NOT NULL
  21. );`
  22. _, err := cs.dbConn.Exec(query)
  23. if err != nil {
  24. return fmt.Errorf("failed to create clients table: %w", err)
  25. }
  26. return nil
  27. }
  28. // Create creates a new user
  29. func (us *ClientStore) Create(user *models.Client) error {
  30. return us.dbConn.Create("clients", user)
  31. }
  32. // GetByID retrieves a user by ID
  33. func (us *ClientStore) GetByID(id string) (*models.Client, error) {
  34. user, err := us.dbConn.GetByID("clients", id)
  35. if err != nil {
  36. return nil, err
  37. }
  38. return user.(*models.Client), nil
  39. }
  40. // Update updates an existing user
  41. func (us *ClientStore) Update(user *models.Client) error {
  42. return us.dbConn.Update("clients", user)
  43. }
  44. // Delete deletes a user by ID
  45. func (us *ClientStore) Delete(id string) error {
  46. return us.dbConn.Delete("clients", id)
  47. }
  48. // List retrieves all clients
  49. func (us *ClientStore) List(filter map[string]interface{}) ([]*models.Client, error) {
  50. clients, err := us.dbConn.List("clients", filter)
  51. if err != nil {
  52. return nil, err
  53. }
  54. var userList []*models.Client
  55. for _, user := range clients {
  56. userList = append(userList, user.(*models.Client))
  57. }
  58. return userList, nil
  59. }