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
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
|
|
}
|