File
Blob: kv/sqlite3/queries.go
| 1 | package sqlite3 |
| 2 | |
| 3 | // --------------------------------------------------------------------------- |
| 4 | // Centralized SQL query definitions for kv/sqlite3. |
| 5 | // |
| 6 | // Fixed-shape queries are grouped by domain and referenced by the prepared |
| 7 | // statement registry (see statements.go) as well as direct call sites. |
| 8 | // Dynamic queries (e.g. RemoveKeys with variable IN clauses) stay in their |
| 9 | // respective call sites but use the table/column names defined here. |
| 10 | // --------------------------------------------------------------------------- |
| 11 | |
| 12 | // -- simple_entries --------------------------------------------------------- |
| 13 | |
| 14 | const ( |
| 15 | querySimplePut = "INSERT INTO `simple_entries` (`key`, `value`) VALUES (?, ?) ON CONFLICT(`key`) DO UPDATE SET `value` = excluded.`value`" |
| 16 | querySimpleGet = "SELECT `value` FROM `simple_entries` WHERE `key` = ?" |
| 17 | querySimpleDel = "DELETE FROM `simple_entries` WHERE `key` = ?" |
| 18 | ) |
| 19 | |
| 20 | // -- prefix_entries --------------------------------------------------------- |
| 21 | |
| 22 | const ( |
| 23 | queryPrefixAppend = "INSERT INTO `prefix_entries` (`prefix`, `child`) VALUES (?, ?) ON CONFLICT DO NOTHING" |
| 24 | queryPrefixContains = "SELECT 1 FROM `prefix_entries` WHERE `prefix` = ? AND `child` = ? LIMIT 1" |
| 25 | queryPrefixList = "SELECT `child` FROM `prefix_entries` WHERE `prefix` = ?" |
| 26 | queryPrefixRemove = "DELETE FROM `prefix_entries` WHERE `prefix` = ? AND `child` = ?" |
| 27 | queryPrefixCount = "SELECT COUNT(*) FROM `prefix_entries` WHERE `prefix` = ?" |
| 28 | ) |
| 29 | |
| 30 | // -- lease_entries ---------------------------------------------------------- |
| 31 | |
| 32 | const ( |
| 33 | queryLeaseAcquire = "INSERT INTO `lease_entries` (`owner`, `token`) VALUES (?, ?) " + |
| 34 | "ON CONFLICT(`owner`) DO UPDATE SET `token` = excluded.`token` " + |
| 35 | "WHERE `token` <= ?" |
| 36 | queryLeaseRenew = "UPDATE `lease_entries` SET `token` = ? WHERE `owner` = ? AND `token` = ? AND `token` > ?" |
| 37 | queryLeaseRelease = "DELETE FROM `lease_entries` WHERE `owner` = ? AND `token` = ?" |
| 38 | queryLeaseGet = "SELECT `token` FROM `lease_entries` WHERE `owner` = ?" |
| 39 | queryLeaseImport = "INSERT INTO `lease_entries` (`owner`, `token`) VALUES (?, ?) ON CONFLICT(`owner`) DO UPDATE SET `token` = excluded.`token`" |
| 40 | ) |
| 41 | |
| 42 | // -- key_trackers ----------------------------------------------------------- |
| 43 | |
| 44 | const ( |
| 45 | queryTrackerLookup = "SELECT `hash`, `flags` FROM `key_trackers` WHERE `key` = ?" |
| 46 | queryTrackerInsert = "INSERT INTO `key_trackers` (`key`, `hash`, `flags`) VALUES (?, ?, ?)" |
| 47 | queryTrackerUpdate = "UPDATE `key_trackers` SET `flags` = ? WHERE `key` = ?" |
| 48 | queryTrackerDelete = "DELETE FROM `key_trackers` WHERE `key` = ?" |
| 49 | ) |
| 50 | |
| 51 | // -- provider (list / range) ------------------------------------------------ |
| 52 | |
| 53 | const ( |
| 54 | queryListKeys = "SELECT `key`, `flags` FROM `key_trackers`" |
| 55 | queryRangeKeysNorm = "SELECT `key` FROM `key_trackers` WHERE (`hash` > ? AND `hash` < ?) OR `hash` = ? ORDER BY `hash` ASC" |
| 56 | queryRangeKeysWrap = "SELECT `key` FROM `key_trackers` WHERE `hash` > ? OR `hash` < ? OR `hash` = ? ORDER BY `hash` ASC" |
| 57 | ) |