// Package storage 定义持久化接口(MVC Model 层),与具体数据库实现解耦。 // SQL 语句遵循通用标准语法(ANSI SQL),便于在 SQLite / PostgreSQL 之间迁移。 package storage import ( "context" "stock-analysis/internal/model" ) // KlineStore 日K线存储接口。 type KlineStore interface { // SaveKlines 幂等批量写入指定标的的K线(已存在的记录跳过)。 SaveKlines(ctx context.Context, code string, klines []model.Kline) error // GetKlines 按时间升序返回指定标的的全部K线。 GetKlines(ctx context.Context, code string) ([]model.Kline, error) // CountKlines 返回指定标的的K线条数。 CountKlines(ctx context.Context, code string) (int, error) // LastKlineDate 返回指定标的的最新K线日期(YYYY-MM-DD),无记录返回空串。 LastKlineDate(ctx context.Context, code string) (string, error) // ListCodes 返回库中全部标的代码。 ListCodes(ctx context.Context) ([]string, error) // LoadAllKlines 一次性加载全部标的的K线(map 键为标的代码)。 LoadAllKlines(ctx context.Context) (map[string][]model.Kline, error) // Close 关闭存储。 Close() error }