Comparison

plugins/mod_storage_sql.lua @ 13151:7ebb3d6afcd1

mod_storage_sql: Add some TODO comments for future UPSERT work
author Kim Alvefur <zash@zash.se>
date Sun, 11 Jun 2023 20:25:50 +0200
parent 13150:9e6ede86d35d
child 13154:6cf5c215825d
comparison
equal deleted inserted replaced
13150:9e6ede86d35d 13151:7ebb3d6afcd1
215 FROM "prosody" 215 FROM "prosody"
216 WHERE "host"=? AND "user"=? AND "store"=? AND "key"=? 216 WHERE "host"=? AND "user"=? AND "store"=? AND "key"=?
217 LIMIT 1; 217 LIMIT 1;
218 ]]; 218 ]];
219 for key, data in pairs(keydatas) do 219 for key, data in pairs(keydatas) do
220 -- TODO Test UPSERT in PostgreSQL before enabling it.
220 if type(key) == "string" and key ~= "" and engine.params.driver == "SQLite3" and data ~= self.remove then 221 if type(key) == "string" and key ~= "" and engine.params.driver == "SQLite3" and data ~= self.remove then
221 local t, value = assert(serialize(data)); 222 local t, value = assert(serialize(data));
222 engine:insert(upsert_sql, host, username or "", self.store, key, t, value, t, value); 223 engine:insert(upsert_sql, host, username or "", self.store, key, t, value, t, value);
223 elseif type(key) == "string" and key ~= "" then 224 elseif type(key) == "string" and key ~= "" then
224 engine:delete(delete_sql, 225 engine:delete(delete_sql,
346 INSERT INTO "prosodyarchive" 347 INSERT INTO "prosodyarchive"
347 ("host", "user", "store", "when", "with", "key", "type", "value") 348 ("host", "user", "store", "when", "with", "key", "type", "value")
348 VALUES (?,?,?,?,?,?,?,?); 349 VALUES (?,?,?,?,?,?,?,?);
349 ]]; 350 ]];
350 if key then 351 if key then
352 -- TODO use UPSERT like map store
351 local result = engine:delete(delete_sql, host, user or "", store, key); 353 local result = engine:delete(delete_sql, host, user or "", store, key);
352 if result and item_count then 354 if result and item_count then
353 item_count = item_count - result:affected(); 355 item_count = item_count - result:affected();
354 end 356 end
355 else 357 else