package handlers import ( sqlc "nyanimedb/sql" "strconv" ) type Server struct { db *sqlc.Queries } func NewServer(db *sqlc.Queries) Server { return Server{db: db} } // type Cursor interface { // ParseCursor(sortBy oapi.TitleSort, data oapi.Cursor) (Cursor, error) // Values() map[string]interface{} // // for logs only // Type() string // } // type CursorByID struct { // ID int64 // } // func (c CursorByID) ParseCursor(sortBy oapi.TitleSort, data oapi.Cursor) (Cursor, error) { // var cur CursorByID // if err := json.Unmarshal(data, &cur); err != nil { // return nil, fmt.Errorf("invalid cursor (id): %w", err) // } // if cur.ID == 0 { // return nil, errors.New("cursor id must be non-zero") // } // return cur, nil // } // func (c CursorByID) Values() map[string]interface{} { // return map[string]interface{}{ // "cursor_id": c.ID, // "cursor_year": nil, // "cursor_rating": nil, // } // } // func (c CursorByID) Type() string { return "id" } // func NewCursor(sortBy string) (Cursor, error) { // switch Type(sortBy) { // case TypeID: // return CursorByID{}, nil // case TypeYear: // return CursorByYear{}, nil // case TypeRating: // return CursorByRating{}, nil // default: // return nil, fmt.Errorf("unsupported sort_by: %q", sortBy) // } // } // decodes a base64-encoded JSON string into a CursorObj // Returns the parsed CursorObj and an error // func parseCursor(encoded oapi.Cursor) (*oapi.CursorObj, error) { // // Decode base64 // decoded, err := base64.StdEncoding.DecodeString(encoded) // if err != nil { // return nil, fmt.Errorf("parseCursor: %v", err) // } // // Parse JSON // var cursor oapi.CursorObj // if err := json.Unmarshal(decoded, &cursor); err != nil { // return nil, fmt.Errorf("parseCursor: %v", err) // } // return &cursor, nil // } func parseInt64(s string) (int32, error) { i, err := strconv.ParseInt(s, 10, 64) return int32(i), err }