Skip to content

Commit 7afb7ec

Browse files
committed
Create bucket with correct priority
1 parent 5a18308 commit 7afb7ec

File tree

1 file changed

+18
-5
lines changed

1 file changed

+18
-5
lines changed

crates/core/src/operations.rs

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use alloc::format;
22
use alloc::string::String;
33

4+
use crate::bucket_priority::BucketPriority;
45
use crate::error::{PSResult, SQLiteError};
56
use sqlite_nostd as sqlite;
67
use sqlite_nostd::{Connection, ResultCode};
@@ -17,8 +18,11 @@ SELECT
1718
json_extract(e.value, '$.data') as data,
1819
json_extract(e.value, '$.has_more') as has_more,
1920
json_extract(e.value, '$.after') as after,
20-
json_extract(e.value, '$.next_after') as next_after
21-
FROM json_each(json_extract(?, '$.buckets')) e",
21+
json_extract(e.value, '$.next_after') as next_after,
22+
json_extract(d.value, '$.priority') as priority,
23+
FROM json_each(json_extract(?1, '$.buckets')) e
24+
LEFT OUTER JOIN json_each(json_extract(?1, '$.descriptions')) d
25+
ON json_extract(e.value, '$.bucket') == d.key",
2226
)?;
2327
statement.bind_text(1, data, sqlite::Destructor::STATIC)?;
2428

@@ -28,8 +32,15 @@ FROM json_each(json_extract(?, '$.buckets')) e",
2832
// let _has_more = statement.column_int(2)? != 0;
2933
// let _after = statement.column_text(3)?;
3034
// let _next_after = statement.column_text(4)?;
35+
let priority = match statement.column_type(5)? {
36+
sqlite_nostd::ColumnType::Integer => {
37+
BucketPriority::try_from(statement.column_int(5)?).ok()
38+
}
39+
_ => None,
40+
}
41+
.unwrap_or_default();
3142

32-
insert_bucket_operations(db, bucket, data)?;
43+
insert_bucket_operations(db, bucket, data, priority)?;
3344
}
3445

3546
Ok(())
@@ -39,6 +50,7 @@ pub fn insert_bucket_operations(
3950
db: *mut sqlite::sqlite3,
4051
bucket: &str,
4152
data: &str,
53+
priority: BucketPriority,
4254
) -> Result<(), SQLiteError> {
4355
// Statement to insert new operations (only for PUT and REMOVE).
4456
// language=SQLite
@@ -60,13 +72,14 @@ FROM json_each(?) e",
6072
// We can consider splitting this into separate SELECT and INSERT statements.
6173
// language=SQLite
6274
let bucket_statement = db.prepare_v2(
63-
"INSERT INTO ps_buckets(name)
64-
VALUES(?)
75+
"INSERT INTO ps_buckets(name, priority)
76+
VALUES(?, ?)
6577
ON CONFLICT DO UPDATE
6678
SET last_applied_op = last_applied_op
6779
RETURNING id, last_applied_op",
6880
)?;
6981
bucket_statement.bind_text(1, bucket, sqlite::Destructor::STATIC)?;
82+
bucket_statement.bind_int(2, priority.into());
7083
bucket_statement.step()?;
7184

7285
let bucket_id = bucket_statement.column_int64(0)?;

0 commit comments

Comments
 (0)