56 lines
1.3 KiB
Go
56 lines
1.3 KiB
Go
package api
|
||
|
||
import (
|
||
"ssq-desk/internal/service"
|
||
"ssq-desk/internal/storage/repository"
|
||
)
|
||
|
||
// SsqAPI 双色球查询 API
|
||
type SsqAPI struct {
|
||
queryService *service.QueryService
|
||
}
|
||
|
||
// NewSsqAPI 创建双色球查询 API
|
||
func NewSsqAPI() (*SsqAPI, error) {
|
||
// 优先使用 MySQL(数据源)
|
||
repo, err := repository.NewMySQLSsqRepository()
|
||
if err != nil {
|
||
// MySQL 连接失败,降级使用本地 SQLite
|
||
repo, err = repository.NewSQLiteSsqRepository()
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
}
|
||
|
||
queryService := service.NewQueryService(repo)
|
||
|
||
return &SsqAPI{
|
||
queryService: queryService,
|
||
}, nil
|
||
}
|
||
|
||
// QueryRequest 查询请求参数
|
||
type QueryRequest struct {
|
||
RedBalls []int `json:"red_balls"` // 红球列表
|
||
BlueBall int `json:"blue_ball"` // 蓝球(0表示不限制)
|
||
BlueBallRange []int `json:"blue_ball_range"` // 蓝球筛选范围
|
||
}
|
||
|
||
// QueryHistory 查询历史数据
|
||
func (api *SsqAPI) QueryHistory(req QueryRequest) (*service.QueryResult, error) {
|
||
if api.queryService == nil {
|
||
// 重新初始化
|
||
newAPI, err := NewSsqAPI()
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
api.queryService = newAPI.queryService
|
||
}
|
||
|
||
return api.queryService.Query(service.QueryRequest{
|
||
RedBalls: req.RedBalls,
|
||
BlueBall: req.BlueBall,
|
||
BlueBallRange: req.BlueBallRange,
|
||
})
|
||
}
|