Files
app-api/internal/repository/curve.go
T
2026-06-04 19:39:08 +08:00

66 lines
1.7 KiB
Go

package repository
import (
"context"
"database/sql"
"fmt"
"github.com/luxsin/app-api/internal/model"
)
type CurveRepository struct {
db *sql.DB
}
func NewCurveRepository(db *sql.DB) *CurveRepository {
return &CurveRepository{db: db}
}
// GetModelByBrandAndName 按 brand_name + name 查询 Model(唯一索引)
func (r *CurveRepository) GetModelByBrandAndName(ctx context.Context, brandName, name string) (*model.Model, error) {
const query = `SELECT id, brand_name, name, form, rig, source, eq_key, create_at FROM model WHERE BINARY brand_name = ? AND BINARY name = ?`
var m model.Model
var form, rig, source, eqKey sql.NullString
err := r.db.QueryRowContext(ctx, query, brandName, name).Scan(
&m.ID, &m.BrandName, &m.Name, &form, &rig, &source, &eqKey, &m.CreateAt,
)
if err == sql.ErrNoRows {
return nil, nil
}
if err != nil {
return nil, fmt.Errorf("query model: %w", err)
}
m.Form = nullStringPtr(form)
m.Rig = nullStringPtr(rig)
m.Source = nullStringPtr(source)
m.EqKey = nullStringPtr(eqKey)
return &m, nil
}
// GetTargetByLabel 按 label 查询 Target
func (r *CurveRepository) GetTargetByLabel(ctx context.Context, label string) (*model.Target, error) {
const query = `SELECT id, label, read_csv, file, bassBoost, addtime FROM target WHERE BINARY label = ?`
var t model.Target
var file, bassBoost sql.NullString
err := r.db.QueryRowContext(ctx, query, label).Scan(
&t.ID, &t.Label, &t.ReadCSV, &file, &bassBoost, &t.AddTime,
)
if err == sql.ErrNoRows {
return nil, nil
}
if err != nil {
return nil, fmt.Errorf("query target: %w", err)
}
t.File = nullStringPtr(file)
t.BassBoost = nullStringPtr(bassBoost)
return &t, nil
}