data/wine_engine.db
SQLite format 3 @ .��
� }
R��w�
k �
@��]�a�x} �I1�!indexidx_user_wine_holdings_user_iduser_wine_holdingsCREATE INDEX idx_user_wine_holdings_user_id ON user_wine_holdings(user_id)o=%� indexidx_wine_ratings_wine_idwine_ratingsCREATE INDEX idx_wine_ratings_wine_id ON wine_ratings(wine_id)zE#�indexidx_wine_prices_collected_atwine_pricesCREATE INDEX idx_wine_prices_collected_at ON wine_prices(collected_at)k;#�indexidx_wine_prices_wine_idwine_pricesCREATE INDEX idx_wine_prices_wine_id ON wine_prices(wine_id)R/mindexidx_wines_countrywinesCREATE INDEX idx_wines_country ON wines(country)O
-iindexidx_wines_regionwinesCREATE INDEX idx_wines_region ON wines(region)U1qindexidx_wines_varietalwines
CREATE INDEX idx_wines_varietal ON wines(varietal)I)aindexidx_wines_namewinesCREATE INDEX idx_wines_name ON wines(name)�
--�Qtableaffiliate_clicksaffiliate_clicksCREATE TABLE affiliate_clicks (
id INTEGER PRIMARY KEY,
user_id INTEGER,
wine_id INTEGER,
vendor TEXT NOT NULL,
product_id TEXT,
click_ref TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)�J 11�?tableuser_wine_holdingsuser_wine_holdings
CREATE TABLE user_wine_holdings (
id INTEGER PRIMARY KEY,
user_id INTEGER NOT NULL,
wine_id INTEGER NOT NULL,
units INTEGER NOT NULL DEFAULT 1,
cost_basis REAL,
acquired_date DATE,
notes TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
FOREIGN KEY (wine_id) REFERENCES wines(id) ON DELETE CASCADE
)�6�KtableusersusersCREATE TABLE users (
id INTEGER PRIMARY KEY,
email TEXT UNIQUE NOT NULL,
name TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
))= indexsqlite_autoindex_users_1users �v%%�/tablewine_ratingswine_ratingsCREATE TABLE wine_ratings (
id INTEGER PRIMARY KEY,
wine_id INTEGER NOT NULL,
source TEXT NOT NULL, -- 'user', 'critic', 'sommelier'
rating REAL NOT NULL,
review TEXT,
user_id INTEGER,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (wine_id) REFERENCES wines(id) ON DELETE CASCADE
)�k##�tablewine_priceswine_pricesCREATE TABLE wine_prices (
id INTEGER PRIMARY KEY,
wine_id INTEGER NOT NULL,
vendor TEXT NOT NULL,
price REAL NOT NULL,
currency TEXT DEFAULT 'USD',
source_url TEXT,
collected_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (wine_id) REFERENCES wines(id) ON DELETE CASCADE
)�"�#tablewineswinesCREATE TABLE wines (
id INTEGER PRIMARY KEY,
winecom_id TEXT UNIQUE,
winebid_id TEXT UNIQUE,
vivino_id TEXT UNIQUE,
name TEXT NOT NULL,
varietal TEXT,
region TEXT,
country TEXT,
vintage INTEGER,
image_url TEXT,
alc_percent REAL,
tasting_notes TEXT,
critic_scores TEXT, -- JSON: {"ws": 92, "we": 89, "js": 94}
average_price REAL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
))= indexsqlite_autoindex_wines_3wines)= indexsqlite_autoindex_wines_2wines)= indexsqlite_autoindex_wines_1wines
r�L
�
� ++ I33Penfolds GrangeShirazSouth AustraliaAustralia�{"ws": 96, "we": 95, "js": 97}@����R2025-12-02 16:40:162025-12-02 16:40:16�# Q1# M33Screaming Eagle Cabernet SauvignonCabernet SauvignonNapa ValleyUSA�{"ws": 100, "we": 99, "js": 100}@�W��G�2025-12-02 16:40:162025-12-02 16:40:16� Y! I33Domaine de la Romanée-Conti La TâchePinot NoirBurgundyFrance�{"ws": 97, "we": 98, "js": 98}@�o�p��
2025-12-02 16:40:162025-12-02 16:40:16� )# I33Opus OneBordeaux BlendNapa ValleyUSA�{"ws": 94, "we": 93, "js": 95}@u��
=p�2025-12-02 16:40:162025-12-02 16:40:16� -) I33Château MargauxCabernet BlendBordeauxFrance�{"ws": 98, "we": 97, "js": 99}@�?��R2025-12-02 16:40:162025-12-02 16:40:16
� �����
� �����
� �����
� �o"��D
� K E3wine.com@����RUSDhttps://wine.com/product/9012025-12-02 16:40:16K E3wine.com@�W��G�USDhttps://wine.com/product/6782025-12-02 16:40:16J E3winebid@�o�p��
USDhttps://winebid.com/item/3452025-12-02 16:40:16C E3vivinoIUSDhttps://vivino.com/wines/0122025-12-02 16:40:16K E3wine.com@u��
=p�USDhttps://wine.com/product/7892025-12-02 16:40:16C E3winebid�USDhttps://winebid.com/item/4562025-12-02 16:40:16J E3wine.com@�?��RUSDhttps://wine.com/product/1232025-12-02 16:40:16
�~C , # 3userDream wine!2025-12-02 16:40:169 9 3criticPerfection in a bottle2025-12-02 16:40:16G K 3user@ Excellent wine, worth the price2025-12-02 16:40:167 ; 3userAbsolutely magnificent!2025-12-02 16:40:16
� � 4 33demo@winefinder.comDemo User2025-12-02 16:40:16
� � 3 demo@winefinder.com
w ��w 0 ! 3@�O��R2024-01-102025-12-02 16:40:16* ! 3+2023-06-202025-12-02 16:40:16) ! 3�2023-01-152025-12-02 16:40:16
� � ' 3winecom123452025-12-02 18:08:32
y ���y� +Penfolds Grange&QScreaming Eagle Cabernet Sauvignon*YDomaine de la Romanée-Conti La TâcheOpus One- Château Margaux
� �����
Shiraz1Cabernet Sauvignon!Pinot Noir)Bordeaux Blend) Cabernet Blend
� ����� +South Australia#Napa ValleyBurgundy#Napa Valley Bordeaux
� �����
AustraliaUSA
FranceUSA France
� �������
Y �����qY 32025-12-02 16:40:1632025-12-02 16:40:1632025-12-02 16:40:1632025-12-02 16:40:1632025-12-02 16:40:1632025-12-02 16:40:163 2025-12-02 16:40:16
� ����
� ���