|
|
package mysql
import ( "context" "git.aiterp.net/lucifer/new-server/models" "github.com/jmoiron/sqlx" )
type BridgeRepo struct { DBX *sqlx.DB }
func (b *BridgeRepo) Find(ctx context.Context, id int) (models.Bridge, error) { var bridge models.Bridge err := b.DBX.GetContext(ctx, &bridge, "SELECT * FROM bridge WHERE id = ?", id) if err != nil { return models.Bridge{}, dbErr(err) }
return bridge, nil }
func (b *BridgeRepo) FetchAll(ctx context.Context) ([]models.Bridge, error) { bridges := make([]models.Bridge, 0, 8) err := b.DBX.GetContext(ctx, bridges, "SELECT * FROM bridge") if err != nil { return nil, dbErr(err) }
return bridges, nil }
func (b *BridgeRepo) Save(ctx context.Context, bridge *models.Bridge) error { if bridge.ID > 0 { _, err := b.DBX.ExecContext( ctx, "UPDATE bridge SET name = ?, address = ?, token = ? WHERE id = ?", bridge.Name, bridge.Address, bridge.Token, bridge.ID, )
if err != nil { return dbErr(err) } } else { rs, err := b.DBX.ExecContext( ctx, "INSERT INTO bridge (name, driver, address, token) VALUES (?, ?, ?, ?)", bridge.Name, bridge.Driver, bridge.Address, bridge.Token, )
if err != nil { return dbErr(err) }
id, err := rs.LastInsertId() if err != nil { return dbErr(err) }
bridge.ID = int(id) }
return nil }
func (b *BridgeRepo) Delete(ctx context.Context, bridge *models.Bridge) error { _, err := b.DBX.ExecContext(ctx, "DELETE FROM bridge WHERE id = ?", bridge.ID) if err != nil { return dbErr(err) }
_, err = b.DBX.ExecContext(ctx, "DELETE FROM device WHERE bridge_id = ?", bridge.ID) if err != nil { return dbErr(err) }
bridge.ID = 0 return nil }
|