Files
sub2api-cn-relay-manager/internal/store/sqlite/packs_repo.go
2026-05-12 23:25:02 +08:00

56 lines
1.0 KiB
Go

package sqlite
import (
"context"
"fmt"
"strings"
)
type Pack struct {
PackID string
Version string
Checksum string
}
type PacksRepo struct {
db execQuerier
}
func newPacksRepo(db execQuerier) *PacksRepo {
return &PacksRepo{db: db}
}
func (r *PacksRepo) Create(ctx context.Context, pack Pack) (int64, error) {
packID := strings.TrimSpace(pack.PackID)
version := strings.TrimSpace(pack.Version)
checksum := strings.TrimSpace(pack.Checksum)
switch {
case packID == "":
return 0, fmt.Errorf("pack_id is required")
case version == "":
return 0, fmt.Errorf("version is required")
case checksum == "":
return 0, fmt.Errorf("checksum is required")
}
result, err := r.db.ExecContext(
ctx,
`INSERT INTO packs (pack_id, version, checksum)
VALUES (?, ?, ?)`,
packID,
version,
checksum,
)
if err != nil {
return 0, fmt.Errorf("insert pack %q: %w", packID, err)
}
id, err := result.LastInsertId()
if err != nil {
return 0, fmt.Errorf("read inserted pack id for %q: %w", packID, err)
}
return id, nil
}