Retain history

This commit is contained in:
2026-10-06 13:32:32 +03:00
parent 33d2621cf3
commit 4d8b1b3cfc
2 changed files with 12 additions and 8 deletions
+4 -8
View File
@@ -41,13 +41,7 @@ impl ProgressSync {
self.writer.connection.call(move |conn| -> rusqlite::Result<()> {
conn.execute("insert into progress (user_id, document_id, progress, percentage, device, device_id, timestamp)
select id, :document_id, :progress, :percentage, :device, :device_id, :timestamp from users
where username = :username
on conflict (user_id, document_id) do update
set progress = excluded.progress,
percentage = excluded.percentage,
device = excluded.device,
device_id = excluded.device_id,
timestamp = excluded.timestamp", named_params!
where username = :username", named_params!
{ ":username": username,
":document_id": doc.document_id,
":progress": doc.progress,
@@ -69,7 +63,9 @@ impl ProgressSync {
document_id, progress, percentage, device, device_id, timestamp
from progress
left join users on progress.user_id = users.id
where users.username = :username and progress.document_id = :document_id", named_params!
where users.username = :username and progress.document_id = :document_id
order by progress.rowid desc
limit 1", named_params!
{ ":username": username,
":document_id": document_id,
}, |row| {
+8
View File
@@ -16,6 +16,14 @@ impl Writer {
connection.call(|conn| -> rusqlite::Result<()> {
conn.execute("create table if not exists users (id primary key, username not null, secret not null, unique(username))", [])?;
conn.execute("create table if not exists progress (user_id not null, document_id not null, progress not null, percentage not null, device not null, device_id, timestamp not null, unique(user_id, document_id), foreign key (user_id) references users(id))", [])?;
// Migrations
//
// Store history
conn.execute("alter table progress rename to progress_bak", [])?;
conn.execute("create table if not exists progress (user_id not null, document_id not null, progress not null, percentage not null, device not null, device_id, timestamp not null, foreign key (user_id) references users(id))", [])?;
conn.execute("insert into progress (user_id, document_id, progress, percentage, device, device_id, timestamp) select user_id, document_id, progress, percentage, device, device_id, timestamp from progress_bak", [])?;
conn.execute("drop table progress_bak", [])?;
Ok(())
}).await?;