add listing expiry checker task

This commit is contained in:
Dylan Knutson
2025-09-10 03:15:58 +00:00
parent 7eada9588c
commit a955acbdce
17 changed files with 274 additions and 51 deletions

View File

@@ -16,6 +16,9 @@ CREATE TABLE users (
updated_at TEXT DEFAULT CURRENT_TIMESTAMP
) STRICT;
CREATE INDEX idx_users_telegram_id ON users(telegram_id);
CREATE INDEX idx_users_username ON users(username);
-- Main listing table (handles all listing types)
CREATE TABLE listings (
id INTEGER PRIMARY KEY,
@@ -34,6 +37,7 @@ CREATE TABLE listings (
slots_available INTEGER DEFAULT 1,
-- Timing
is_active INTEGER DEFAULT 1,
starts_at TEXT DEFAULT CURRENT_TIMESTAMP,
ends_at TEXT NOT NULL,
anti_snipe_minutes INTEGER DEFAULT 5,
@@ -43,6 +47,10 @@ CREATE TABLE listings (
FOREIGN KEY (seller_id) REFERENCES users(id)
) STRICT;
CREATE INDEX idx_listings_seller_id ON listings(seller_id);
CREATE INDEX idx_listings_type ON listings(listing_type);
CREATE INDEX idx_listings_ends_at ON listings(ends_at);
-- Proxy bid strategies (NOT actual bids, but bidding strategies)
CREATE TABLE proxy_bids (
id INTEGER PRIMARY KEY,
@@ -59,6 +67,8 @@ CREATE TABLE proxy_bids (
UNIQUE(listing_id, buyer_id) -- One active proxy per user per listing
) STRICT;
CREATE INDEX idx_proxy_bids_listing_buyer ON proxy_bids(listing_id, buyer_id);
-- Actual bids that happened (events)
CREATE TABLE bids (
id INTEGER PRIMARY KEY,
@@ -83,6 +93,10 @@ CREATE TABLE bids (
FOREIGN KEY (proxy_bid_id) REFERENCES proxy_bids(id)
) STRICT;
CREATE INDEX idx_bids_listing_id ON bids(listing_id);
CREATE INDEX idx_bids_buyer_id ON bids(buyer_id);
CREATE INDEX idx_bids_amount ON bids(bid_amount);
-- Media attachments
CREATE TABLE listing_medias (
id INTEGER PRIMARY KEY,
@@ -95,6 +109,8 @@ CREATE TABLE listing_medias (
FOREIGN KEY (listing_id) REFERENCES listings(id)
) STRICT;
CREATE INDEX idx_listing_medias_listing_id ON listing_medias(listing_id);
-- User preferences
CREATE TABLE user_settings (
user_id INTEGER PRIMARY KEY,
@@ -106,12 +122,19 @@ CREATE TABLE user_settings (
FOREIGN KEY (user_id) REFERENCES users(id)
) STRICT;
-- Create indexes for better performance
CREATE INDEX idx_listings_seller_id ON listings(seller_id);
CREATE INDEX idx_listings_type ON listings(listing_type);
CREATE INDEX idx_listings_ends_at ON listings(ends_at);
CREATE INDEX idx_bids_listing_id ON bids(listing_id);
CREATE INDEX idx_bids_buyer_id ON bids(buyer_id);
CREATE INDEX idx_bids_amount ON bids(bid_amount);
CREATE INDEX idx_proxy_bids_listing_buyer ON proxy_bids(listing_id, buyer_id);
CREATE INDEX idx_listing_medias_listing_id ON listing_medias(listing_id);
-- Message about a listing that were forwarded from the bot to a channel or user
CREATE TABLE forwarded_listings (
id INTEGER PRIMARY KEY,
listing_id INTEGER NOT NULL,
telegram_message_id INTEGER NOT NULL,
telegram_chat_id INTEGER NOT NULL,
forwarding_user_id INTEGER NOT NULL,
created_at TEXT DEFAULT CURRENT_TIMESTAMP,
updated_at TEXT DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (listing_id) REFERENCES listings(id),
FOREIGN KEY (forwarding_user_id) REFERENCES users(id)
) STRICT;
CREATE INDEX idx_forwarded_listings_listing_id ON forwarded_listings(listing_id);
CREATE INDEX idx_forwarded_listings_forwarding_user_id ON forwarded_listings(forwarding_user_id);