Retain history
This commit is contained in:
+4
-8
@@ -41,13 +41,7 @@ impl ProgressSync {
|
|||||||
self.writer.connection.call(move |conn| -> rusqlite::Result<()> {
|
self.writer.connection.call(move |conn| -> rusqlite::Result<()> {
|
||||||
conn.execute("insert into progress (user_id, document_id, progress, percentage, device, device_id, timestamp)
|
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
|
select id, :document_id, :progress, :percentage, :device, :device_id, :timestamp from users
|
||||||
where username = :username
|
where username = :username", named_params!
|
||||||
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!
|
|
||||||
{ ":username": username,
|
{ ":username": username,
|
||||||
":document_id": doc.document_id,
|
":document_id": doc.document_id,
|
||||||
":progress": doc.progress,
|
":progress": doc.progress,
|
||||||
@@ -69,7 +63,9 @@ impl ProgressSync {
|
|||||||
document_id, progress, percentage, device, device_id, timestamp
|
document_id, progress, percentage, device, device_id, timestamp
|
||||||
from progress
|
from progress
|
||||||
left join users on progress.user_id = users.id
|
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,
|
{ ":username": username,
|
||||||
":document_id": document_id,
|
":document_id": document_id,
|
||||||
}, |row| {
|
}, |row| {
|
||||||
|
|||||||
@@ -16,6 +16,14 @@ impl Writer {
|
|||||||
connection.call(|conn| -> rusqlite::Result<()> {
|
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 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))", [])?;
|
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(())
|
Ok(())
|
||||||
}).await?;
|
}).await?;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user