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

package sqlite
import (
"context"
"git.aiterp.net/lucifer/lucifer/models"
)
type bridgeRepository struct{}
// BridgeRepository is a sqlite datbase repository for the Bridge model.
var BridgeRepository = &bridgeRepository{}
func (b *bridgeRepository) FindByID(ctx context.Context, id int) (models.Bridge, error) {
bridge := models.Bridge{}
err := db.GetContext(ctx, &bridge, "SELECT * FROM bridge WHERE id=?", id)
return bridge, err
}
func (b *bridgeRepository) List(ctx context.Context) ([]models.Bridge, error) {
bridges := make([]models.Bridge, 0, 64)
err := db.SelectContext(ctx, &bridges, "SELECT * FROM bridge")
return bridges, err
}
func (b *bridgeRepository) ListByDriver(ctx context.Context, driver string) ([]models.Bridge, error) {
bridges := make([]models.Bridge, 0, 64)
err := db.SelectContext(ctx, &bridges, "SELECT * FROM bridge WHERE driver=?", driver)
return bridges, err
}
func (b *bridgeRepository) Insert(ctx context.Context, bridge models.Bridge) (models.Bridge, error) {
res, err := db.NamedExecContext(ctx, "INSERT INTO bridge (name, internal_id, driver, addr, key) VALUES(:name, :internal_id, :driver, :addr, :key)", bridge)
if err != nil {
return models.Bridge{}, err
}
id, err := res.LastInsertId()
if err != nil {
return models.Bridge{}, err
}
bridge.ID = int(id)
return bridge, nil
}
func (b *bridgeRepository) Update(ctx context.Context, bridge models.Bridge) error {
_, err := db.NamedExecContext(ctx, "UPDATE bridge SET name=:name, addr=:addr, key=:key WHERE id=:id", bridge)
return err
}
func (b *bridgeRepository) Remove(ctx context.Context, bridge models.Bridge) error {
_, err := db.NamedExecContext(ctx, "DELETE FROM bridge WHERE id=:id", bridge)
return err
}