1pub const MIGRATION_V1: &str = r#"
2CREATE TABLE schema_meta (
3 version INTEGER PRIMARY KEY
4);
5
6CREATE TABLE identity (
7 id INTEGER PRIMARY KEY CHECK (id = 1),
8 anon_id TEXT NOT NULL,
9 known_user_id TEXT,
10 created_at_ms INTEGER NOT NULL
11);
12
13CREATE TABLE entitlements (
14 user_scope TEXT NOT NULL,
15 entitlement_id TEXT NOT NULL,
16 is_active INTEGER NOT NULL,
17 product_id TEXT,
18 expires_at_ms INTEGER,
19 updated_at_ms INTEGER NOT NULL,
20 PRIMARY KEY (user_scope, entitlement_id)
21);
22
23CREATE TABLE etag_cache (
24 resource TEXT PRIMARY KEY,
25 etag TEXT NOT NULL,
26 updated_at_ms INTEGER NOT NULL
27);
28
29INSERT INTO schema_meta (version) VALUES (1);
30"#;
31
32pub const MIGRATION_V2: &str = r#"
33ALTER TABLE entitlements ADD COLUMN store TEXT NOT NULL DEFAULT '';
34ALTER TABLE entitlements ADD COLUMN product_identifier TEXT NOT NULL DEFAULT '';
35ALTER TABLE entitlements ADD COLUMN expires_iso TEXT;
36
37CREATE TABLE credit_balance (
38 user_scope TEXT PRIMARY KEY,
39 balance INTEGER NOT NULL,
40 updated_at_ms INTEGER NOT NULL
41);
42
43UPDATE schema_meta SET version = 2;
44"#;
45
46pub const MIGRATION_V3: &str = r#"
47CREATE TABLE app_account_tokens (
48 scope TEXT PRIMARY KEY,
49 token TEXT NOT NULL,
50 created_at TEXT NOT NULL
51);
52
53CREATE TABLE session_events (
54 id INTEGER PRIMARY KEY AUTOINCREMENT,
55 kind TEXT NOT NULL,
56 occurred_at TEXT NOT NULL,
57 duration_ms INTEGER
58);
59CREATE INDEX idx_session_events_id ON session_events(id);
60
61UPDATE schema_meta SET version = 3;
62"#;
63
64pub const MIGRATION_V4: &str = r#"
65DROP TABLE IF EXISTS identity;
66
67CREATE TABLE IF NOT EXISTS identity (
68 id INTEGER PRIMARY KEY CHECK (id = 1),
69 rovenue_id TEXT NOT NULL,
70 app_user_id TEXT,
71 synced INTEGER NOT NULL DEFAULT 1,
72 created_at_ms INTEGER NOT NULL
73);
74
75UPDATE schema_meta SET version = 4;
76"#;
77
78pub const MIGRATION_V5: &str = r#"
79CREATE TABLE offerings_cache (
80 resource TEXT PRIMARY KEY,
81 body TEXT NOT NULL,
82 updated_at_ms INTEGER NOT NULL
83);
84
85UPDATE schema_meta SET version = 5;
86"#;
87
88pub const MIGRATION_V6: &str = "\
89CREATE TABLE attribute_mutations (\
90 id INTEGER PRIMARY KEY AUTOINCREMENT,\
91 key TEXT NOT NULL,\
92 value TEXT\
93);\
94CREATE INDEX idx_attribute_mutations_id ON attribute_mutations(id);\
95UPDATE schema_meta SET version = 6;\
96";
97
98pub const MIGRATION_V7: &str = r#"
99CREATE TABLE remote_config_cache (
100 resource TEXT PRIMARY KEY,
101 body TEXT NOT NULL,
102 updated_at_ms INTEGER NOT NULL
103);
104
105UPDATE schema_meta SET version = 7;
106"#;
107
108pub const MIGRATION_V8: &str = r#"
109CREATE TABLE virtual_currency_balance (
110 user_scope TEXT NOT NULL,
111 code TEXT NOT NULL,
112 balance INTEGER NOT NULL,
113 updated_at_ms INTEGER NOT NULL,
114 PRIMARY KEY (user_scope, code)
115);
116
117CREATE TABLE experiment_exposure (
118 user_scope TEXT NOT NULL,
119 experiment_id TEXT NOT NULL,
120 variant_id TEXT NOT NULL,
121 exposed_at_ms INTEGER NOT NULL,
122 PRIMARY KEY (user_scope, experiment_id, variant_id)
123);
124
125UPDATE schema_meta SET version = 8;
126"#;
127
128pub const MIGRATION_V9: &str = r#"
129CREATE TABLE funnel_install (
130 id INTEGER PRIMARY KEY CHECK (id = 1),
131 install_id TEXT NOT NULL,
132 created_at_ms INTEGER NOT NULL
133);
134
135CREATE TABLE funnel_claim_state (
136 install_id TEXT PRIMARY KEY,
137 state TEXT NOT NULL,
138 subscriber_id TEXT,
139 claimed_at_ms INTEGER,
140 created_at_ms INTEGER NOT NULL
141);
142
143UPDATE schema_meta SET version = 9;
144"#;
145
146pub const MIGRATION_V10: &str = r#"
147CREATE TABLE placements_cache (
148 resource TEXT PRIMARY KEY,
149 body TEXT NOT NULL,
150 updated_at_ms INTEGER NOT NULL
151);
152
153UPDATE schema_meta SET version = 10;
154"#;
155
156pub const MIGRATION_V11: &str = r#"
157CREATE TABLE event_queue (
158 id INTEGER PRIMARY KEY AUTOINCREMENT,
159 envelope_json TEXT NOT NULL
160);
161CREATE INDEX idx_event_queue_id ON event_queue(id);
162
163UPDATE schema_meta SET version = 11;
164"#;
165
166pub const MIGRATION_V12: &str = r#"
174CREATE TABLE IF NOT EXISTS event_queue (
175 id INTEGER PRIMARY KEY AUTOINCREMENT,
176 envelope_json TEXT NOT NULL
177);
178CREATE INDEX IF NOT EXISTS idx_event_queue_id ON event_queue(id);
179DROP TABLE IF EXISTS paywall_events;
180
181UPDATE schema_meta SET version = 12;
182"#;
183
184pub const MIGRATION_V13: &str = r#"
190DROP TABLE IF EXISTS session_events;
191CREATE TABLE session_events (
192 id INTEGER PRIMARY KEY AUTOINCREMENT,
193 rovenue_id TEXT NOT NULL,
194 kind TEXT NOT NULL,
195 occurred_at TEXT NOT NULL,
196 duration_ms INTEGER
197);
198CREATE INDEX idx_session_events_id ON session_events(id);
199
200DROP TABLE IF EXISTS attribute_mutations;
201CREATE TABLE attribute_mutations (
202 id INTEGER PRIMARY KEY AUTOINCREMENT,
203 rovenue_id TEXT NOT NULL,
204 key TEXT NOT NULL,
205 value TEXT
206);
207CREATE INDEX idx_attribute_mutations_id ON attribute_mutations(id);
208
209UPDATE schema_meta SET version = 13;
210"#;
211
212pub const MIGRATIONS: &[&str] = &[
213 MIGRATION_V1,
214 MIGRATION_V2,
215 MIGRATION_V3,
216 MIGRATION_V4,
217 MIGRATION_V5,
218 MIGRATION_V6,
219 MIGRATION_V7,
220 MIGRATION_V8,
221 MIGRATION_V9,
222 MIGRATION_V10,
223 MIGRATION_V11,
224 MIGRATION_V12,
225 MIGRATION_V13,
226];
227pub const LATEST: u32 = 13;