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 }