tests for BulkFilter

This commit is contained in:
Elijah McMorris 2024-08-26 00:04:53 -07:00
parent 057dcb3308
commit 7624d7209d
Signed by: NexVeridian
SSH key fingerprint: SHA256:bsA1SKZxuEcEVHAy3gY1HUeM5ykRJl0U0kQHQn0hMg8
5 changed files with 53 additions and 0 deletions

View file

@ -68,6 +68,8 @@ pub enum CreateMode {
} }
``` ```
### [filter.surql examples](./Useful%20queries.md#filter.surql-examples)
# [Dev Install](./CONTRIBUTING.md#dev-install) # [Dev Install](./CONTRIBUTING.md#dev-install)
# How to Query # How to Query

View file

@ -1,3 +1,16 @@
# filter.surql examples
## Delete entity and related claims, if entity doesn't have the claim, number of episodes property (P1113)
```
let $del = select claims, id from Entity
where claims.claims[where id = Property:1113].value.Thing == [];
let $entity = return (select id from $del).id;
let $claims = return (select claims from $del).claims;
delete $claims;
delete $entity;
```
# Get number of episodes # Get number of episodes
``` ```
let $number_of_episodes = (select claims.claims[where id = Property:1113][0].value.ClaimValueData.Quantity.amount as number_of_episodes from Entity where label = "Black Clover, season 1")[0].number_of_episodes; let $number_of_episodes = (select claims.claims[where id = Property:1113][0].value.ClaimValueData.Quantity.amount as number_of_episodes from Entity where label = "Black Clover, season 1")[0].number_of_episodes;

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,8 @@
let $delete = select claims, id from Entity
where claims.claims[where id = Property:1113].value.Thing == [];
let $entity = return (select id from $delete).id;
let $claims = return (select claims from $delete).claims;
delete $claims;
delete $entity;

View file

@ -62,6 +62,33 @@ async fn entity_threaded(#[case] version: CreateVersion) -> Result<(), Error> {
Ok(()) Ok(())
} }
#[tokio::test]
async fn entity_threaded_filter() -> Result<(), Error> {
env::set_var("FILTER_PATH", "./tests/data/test_filter.surql");
let db = inti_db().await?;
let reader = init_reader("json", "bench");
create_db_entities_threaded(
Some(db.clone()),
reader,
None,
1_000,
100,
CreateVersion::BulkFilter,
)
.await?;
let count: Option<f32> = db
.query("return count(select * from Entity);")
.await
.unwrap()
.take(0)
.unwrap();
assert_eq!(3.0, count.unwrap());
Ok(())
}
async fn property_query(db: &Surreal<Db>) -> Result<Option<f32>, Error> { async fn property_query(db: &Surreal<Db>) -> Result<Option<f32>, Error> {
let x: Option<f32> = db let x: Option<f32> = db
.query("return count(select * from Property);") .query("return count(select * from Property);")