extract parsing ?since

main
bel 2024-04-13 09:20:03 -06:00
parent ab933e3c53
commit e7b3418932
3 changed files with 10 additions and 9 deletions

View File

@ -37,7 +37,7 @@ func newConfig(ctx context.Context) (Config, error) {
func newConfigFromEnv(ctx context.Context, getEnv func(string) string) (Config, error) { func newConfigFromEnv(ctx context.Context, getEnv func(string) string) (Config, error) {
def := Config{ def := Config{
Port: 8080, Port: 38080,
OllamaModel: "gemma:2b", OllamaModel: "gemma:2b",
} }

View File

@ -107,13 +107,10 @@ func newHandlerGetAPIV1Threads(cfg Config) http.HandlerFunc {
return return
} }
since := time.Unix(0, 0) since, err := parseSince(r.URL.Query().Get("since"))
if sinceS := r.URL.Query().Get("since"); sinceS == "" { if err != nil {
} else if n, err := strconv.ParseInt(sinceS, 10, 64); err != nil {
http.Error(w, err.Error(), http.StatusBadRequest) http.Error(w, err.Error(), http.StatusBadRequest)
return return
} else {
since = time.Unix(n, 0)
} }
threads, err := cfg.storage.ThreadsSince(r.Context(), since) threads, err := cfg.storage.ThreadsSince(r.Context(), since)

View File

@ -19,14 +19,18 @@ func NewStorage(driver Driver) Storage {
return Storage{driver: driver} return Storage{driver: driver}
} }
func (s Storage) MessagesSince(ctx context.Context, t time.Time) ([]Message, error) {
return s.messagesWhere(ctx, func(m Message) bool {
return !t.After(m.Time())
})
}
func (s Storage) Threads(ctx context.Context) ([]string, error) { func (s Storage) Threads(ctx context.Context) ([]string, error) {
return s.ThreadsSince(ctx, time.Unix(0, 0)) return s.ThreadsSince(ctx, time.Unix(0, 0))
} }
func (s Storage) ThreadsSince(ctx context.Context, t time.Time) ([]string, error) { func (s Storage) ThreadsSince(ctx context.Context, t time.Time) ([]string, error) {
messages, err := s.messagesWhere(ctx, func(m Message) bool { messages, err := s.MessagesSince(ctx, t)
return !t.After(m.Time())
})
if err != nil { if err != nil {
return nil, err return nil, err
} }