-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path0001_init.sql
More file actions
90 lines (85 loc) · 3.56 KB
/
Copy path0001_init.sql
File metadata and controls
90 lines (85 loc) · 3.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
-- SPDX-License-Identifier: MPL-2.0
-- Initial schema for the Garment Sustainability Bot.
-- Mirrors the original SQLAlchemy models (materials, garments, brands,
-- users, garment_materials M2M). Timestamps are RFC3339 TEXT.
CREATE TABLE IF NOT EXISTS materials (
id INTEGER PRIMARY KEY AUTOINCREMENT,
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL,
name TEXT NOT NULL UNIQUE,
material_type TEXT NOT NULL,
description TEXT,
water_usage_score REAL NOT NULL DEFAULT 50.0,
carbon_footprint_score REAL NOT NULL DEFAULT 50.0,
biodegradability_score REAL NOT NULL DEFAULT 50.0,
chemical_usage_score REAL NOT NULL DEFAULT 50.0,
energy_consumption_score REAL NOT NULL DEFAULT 50.0,
water_liters_per_kg REAL,
co2_kg_per_kg REAL,
energy_mj_per_kg REAL,
is_biodegradable TEXT,
recycling_potential TEXT,
durability_rating REAL,
typical_wash_temp TEXT,
drying_method TEXT
);
CREATE INDEX IF NOT EXISTS ix_materials_name ON materials (name);
CREATE TABLE IF NOT EXISTS garments (
id INTEGER PRIMARY KEY AUTOINCREMENT,
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL,
name TEXT NOT NULL UNIQUE,
category TEXT NOT NULL,
description TEXT,
typical_weight_kg REAL,
expected_lifespan_years REAL,
typical_wears INTEGER,
care_instructions TEXT,
washing_frequency TEXT,
sustainability_score REAL
);
CREATE INDEX IF NOT EXISTS ix_garments_name ON garments (name);
CREATE INDEX IF NOT EXISTS ix_garments_category ON garments (category);
CREATE TABLE IF NOT EXISTS brands (
id INTEGER PRIMARY KEY AUTOINCREMENT,
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL,
name TEXT NOT NULL UNIQUE,
description TEXT,
website TEXT,
overall_rating REAL DEFAULT 50.0,
environmental_rating REAL DEFAULT 50.0,
labor_rating REAL DEFAULT 50.0,
animal_welfare_rating REAL DEFAULT 50.0,
is_certified_bcorp INTEGER DEFAULT 0,
is_fair_trade INTEGER DEFAULT 0,
is_organic_certified INTEGER DEFAULT 0,
uses_recycled_materials INTEGER DEFAULT 0,
carbon_neutral INTEGER DEFAULT 0,
country TEXT,
price_range TEXT,
transparency_score REAL,
good_on_you_rating TEXT
);
CREATE INDEX IF NOT EXISTS ix_brands_name ON brands (name);
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL,
discord_id INTEGER NOT NULL UNIQUE,
username TEXT,
preferred_materials TEXT,
budget_range TEXT,
sustainability_priority TEXT,
queries_count INTEGER NOT NULL DEFAULT 0,
sustainability_points INTEGER NOT NULL DEFAULT 0,
level INTEGER NOT NULL DEFAULT 1,
daily_tips_enabled INTEGER NOT NULL DEFAULT 1
);
CREATE INDEX IF NOT EXISTS ix_users_discord_id ON users (discord_id);
CREATE TABLE IF NOT EXISTS garment_materials (
garment_id INTEGER NOT NULL REFERENCES garments (id),
material_id INTEGER NOT NULL REFERENCES materials (id),
percentage REAL DEFAULT 100.0,
PRIMARY KEY (garment_id, material_id)
);