The main server, and probably only repository in this org.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
1.7 KiB

  1. package sqlite
  2. import (
  3. "context"
  4. "git.aiterp.net/lucifer/lucifer/models"
  5. )
  6. type bridgeRepository struct{}
  7. // BridgeRepository is a sqlite datbase repository for the Bridge model.
  8. var BridgeRepository = &bridgeRepository{}
  9. func (b *bridgeRepository) FindByID(ctx context.Context, id int) (models.Bridge, error) {
  10. bridge := models.Bridge{}
  11. err := db.GetContext(ctx, &bridge, "SELECT * FROM bridge WHERE id=?", id)
  12. return bridge, err
  13. }
  14. func (b *bridgeRepository) List(ctx context.Context) ([]models.Bridge, error) {
  15. bridges := make([]models.Bridge, 0, 64)
  16. err := db.SelectContext(ctx, &bridges, "SELECT * FROM bridge")
  17. return bridges, err
  18. }
  19. func (b *bridgeRepository) ListByDriver(ctx context.Context, driver string) ([]models.Bridge, error) {
  20. bridges := make([]models.Bridge, 0, 64)
  21. err := db.SelectContext(ctx, &bridges, "SELECT * FROM bridge WHERE driver=?", driver)
  22. return bridges, err
  23. }
  24. func (b *bridgeRepository) Insert(ctx context.Context, bridge models.Bridge) (models.Bridge, error) {
  25. res, err := db.NamedExecContext(ctx, "INSERT INTO bridge (name, internal_id, driver, addr, key) VALUES(:name, :internal_id, :driver, :addr, :key)", bridge)
  26. if err != nil {
  27. return models.Bridge{}, err
  28. }
  29. id, err := res.LastInsertId()
  30. if err != nil {
  31. return models.Bridge{}, err
  32. }
  33. bridge.ID = int(id)
  34. return bridge, nil
  35. }
  36. func (b *bridgeRepository) Update(ctx context.Context, bridge models.Bridge) error {
  37. _, err := db.NamedExecContext(ctx, "UPDATE bridge SET name=:name, addr=:addr, key=:key WHERE id=:id", bridge)
  38. return err
  39. }
  40. func (b *bridgeRepository) Remove(ctx context.Context, bridge models.Bridge) error {
  41. _, err := db.NamedExecContext(ctx, "DELETE FROM bridge WHERE id=:id", bridge)
  42. return err
  43. }