Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 7 additions & 11 deletions codegen/src/worktable/generator/queries/in_place.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ impl Generator {
.from_case(Case::Pascal)
.to_case(Case::Snake);
let index = self.columns.indexes.values().find(|idx| idx.field == op.by);
let by_type = self.columns.columns_map.get(&op.by).unwrap();
if let Some(index) = index {
let _index_name = &index.name;

Expand All @@ -46,7 +45,7 @@ impl Generator {
todo!()
}
} else if self.columns.primary_keys.len() == 1 {
self.gen_primary_key_in_place(snake_case_name, by_type, &op.columns)
self.gen_primary_key_in_place(snake_case_name, &op.columns)
} else {
todo!()
}
Expand All @@ -58,12 +57,7 @@ impl Generator {
}
}

fn gen_primary_key_in_place(
&self,
snake_case_name: String,
by_type: &TokenStream,
columns: &[Ident],
) -> TokenStream {
fn gen_primary_key_in_place(&self, snake_case_name: String, columns: &[Ident]) -> TokenStream {
let name_generator = WorktableNameGenerator::from_table_name(self.name.to_string());
let pk_type = name_generator.get_primary_key_type_ident();
let lock_ident =
Expand Down Expand Up @@ -111,11 +105,13 @@ impl Generator {
let custom_lock = self.gen_custom_lock_for_update(lock_ident);

quote! {
pub async fn #method_ident<F: FnMut(#column_types)>(
pub async fn #method_ident<Pk, F: FnMut(#column_types)>(
&self,
mut f: F,
by: #by_type,
) -> eyre::Result<()> {
by: Pk,
) -> eyre::Result<()>
where #pk_type: From<Pk>
{
let pk: #pk_type = by.into();
let lock = {
#custom_lock
Expand Down
7 changes: 5 additions & 2 deletions codegen/src/worktable/generator/queries/update.rs
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,7 @@ impl Generator {
#full_row_lock
};

let row_old = self.select(pk.clone()).expect("should not be deleted by other thread");
let row_old = self.0.select(pk.clone()).expect("should not be deleted by other thread");
let mut row_new = row_old.clone();
let pk = row_old.get_primary_key().clone();
#(#row_updates)*
Expand Down Expand Up @@ -388,7 +388,10 @@ impl Generator {
let custom_lock = self.gen_custom_lock_for_update(lock_ident);

quote! {
pub async fn #method_ident(&self, row: #query_ident, pk: #pk_ident) -> core::result::Result<(), WorkTableError> {
pub async fn #method_ident<Pk>(&self, row: #query_ident, pk: Pk) -> core::result::Result<(), WorkTableError>
where #pk_ident: From<Pk>
{
let pk = pk.into();
let lock = {
#custom_lock
};
Expand Down
5 changes: 3 additions & 2 deletions codegen/src/worktable/generator/table/impls.rs
Original file line number Diff line number Diff line change
Expand Up @@ -105,8 +105,9 @@ impl Generator {
let primary_key_type = name_generator.get_primary_key_type_ident();

quote! {
pub fn select(&self, pk: #primary_key_type) -> Option<#row_type> {
self.0.select(pk)
pub fn select<Pk>(&self, pk: Pk) -> Option<#row_type>
where #primary_key_type: From<Pk> {
self.0.select(pk.into())
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/persistence/task.rs
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,7 @@ where
for (pos, id) in ops_pos_set {
let mut row: BatchInnerRow = self
.queue_inner_wt
.select(id.into())
.select(id)
.expect("exists as Id exists")
.into();
let op = self
Expand Down
26 changes: 13 additions & 13 deletions tests/persistence/sync/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ fn test_space_insert_sync() {
};
{
let table = TestSyncWorkTable::load_from_file(config).await.unwrap();
assert!(table.select(pk.into()).is_some());
assert!(table.select(pk).is_some());
assert_eq!(table.0.pk_gen.get_state(), pk + 1)
}
});
Expand Down Expand Up @@ -132,7 +132,7 @@ fn test_space_insert_many_sync() {
let table = TestSyncWorkTable::load_from_file(config).await.unwrap();
let last = *pks.last().unwrap();
for pk in pks {
assert!(table.select(pk.into()).is_some());
assert!(table.select(pk).is_some());
}
assert_eq!(table.0.pk_gen.get_state(), last + 1)
}
Expand Down Expand Up @@ -179,8 +179,8 @@ fn test_space_update_full_sync() {
};
{
let table = TestSyncWorkTable::load_from_file(config).await.unwrap();
assert!(table.select(pk.into()).is_some());
assert_eq!(table.select(pk.into()).unwrap().another, 13);
assert!(table.select(pk).is_some());
assert_eq!(table.select(pk).unwrap().another, 13);
assert_eq!(table.0.pk_gen.get_state(), pk + 1)
}
});
Expand Down Expand Up @@ -215,16 +215,16 @@ fn test_space_update_query_pk_sync() {
};
table.insert(row.clone()).unwrap();
table
.update_another_by_id(AnotherByIdQuery { another: 13 }, row.id.into())
.update_another_by_id(AnotherByIdQuery { another: 13 }, row.id)
.await
.unwrap();
table.wait_for_ops().await;
row.id
};
{
let table = TestSyncWorkTable::load_from_file(config).await.unwrap();
assert!(table.select(pk.into()).is_some());
assert_eq!(table.select(pk.into()).unwrap().another, 13);
assert!(table.select(pk).is_some());
assert_eq!(table.select(pk).unwrap().another, 13);
assert_eq!(table.0.pk_gen.get_state(), pk + 1)
}
});
Expand Down Expand Up @@ -267,8 +267,8 @@ fn test_space_update_query_unique_sync() {
};
{
let table = TestSyncWorkTable::load_from_file(config).await.unwrap();
assert!(table.select(pk.into()).is_some());
assert_eq!(table.select(pk.into()).unwrap().field, 1.0);
assert!(table.select(pk).is_some());
assert_eq!(table.select(pk).unwrap().field, 1.0);
assert_eq!(table.0.pk_gen.get_state(), pk + 1)
}
});
Expand Down Expand Up @@ -311,8 +311,8 @@ fn test_space_update_query_non_unique_sync() {
};
{
let table = TestSyncWorkTable::load_from_file(config).await.unwrap();
assert!(table.select(pk.into()).is_some());
assert_eq!(table.select(pk.into()).unwrap().another, 13);
assert!(table.select(pk).is_some());
assert_eq!(table.select(pk).unwrap().another, 13);
assert_eq!(table.0.pk_gen.get_state(), pk + 1)
}
});
Expand Down Expand Up @@ -349,7 +349,7 @@ fn test_space_delete_sync() {
};
{
let table = TestSyncWorkTable::load_from_file(config).await.unwrap();
assert!(table.select(pk.into()).is_none());
assert!(table.select(pk).is_none());
assert_eq!(table.0.pk_gen.get_state(), pk + 1)
}
});
Expand Down Expand Up @@ -389,7 +389,7 @@ fn test_space_delete_query_sync() {
};
{
let table = TestSyncWorkTable::load_from_file(config).await.unwrap();
assert!(table.select(pk.into()).is_none());
assert!(table.select(pk).is_none());
assert_eq!(table.0.pk_gen.get_state(), pk + 1)
}
});
Expand Down
26 changes: 13 additions & 13 deletions tests/persistence/sync/string_primary_index.rs
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ fn test_space_insert_sync() {
};
{
let table = TestSyncWorkTable::load_from_file(config).await.unwrap();
assert!(table.select(pk.into()).is_some());
assert!(table.select(pk).is_some());
}
});
}
Expand Down Expand Up @@ -107,7 +107,7 @@ fn test_space_insert_many_sync() {
{
let table = TestSyncWorkTable::load_from_file(config).await.unwrap();
for pk in pks {
assert!(table.select(pk.into()).is_some());
assert!(table.select(pk).is_some());
}
}
});
Expand Down Expand Up @@ -155,8 +155,8 @@ fn test_space_update_full_sync() {
};
{
let table = TestSyncWorkTable::load_from_file(config).await.unwrap();
assert!(table.select(pk.clone().into()).is_some());
assert_eq!(table.select(pk.into()).unwrap().another, 13);
assert!(table.select(pk.clone()).is_some());
assert_eq!(table.select(pk).unwrap().another, 13);
}
});
}
Expand Down Expand Up @@ -190,16 +190,16 @@ fn test_space_update_query_pk_sync() {
};
table.insert(row.clone()).unwrap();
table
.update_another_by_id(AnotherByIdQuery { another: 13 }, row.id.clone().into())
.update_another_by_id(AnotherByIdQuery { another: 13 }, row.id.clone())
.await
.unwrap();
table.wait_for_ops().await;
row.id
};
{
let table = TestSyncWorkTable::load_from_file(config).await.unwrap();
assert!(table.select(pk.clone().into()).is_some());
assert_eq!(table.select(pk.into()).unwrap().another, 13);
assert!(table.select(pk.clone()).is_some());
assert_eq!(table.select(pk).unwrap().another, 13);
}
});
}
Expand Down Expand Up @@ -242,8 +242,8 @@ fn test_space_update_query_unique_sync() {
};
{
let table = TestSyncWorkTable::load_from_file(config).await.unwrap();
assert!(table.select(pk.clone().into()).is_some());
assert_eq!(table.select(pk.into()).unwrap().field, 1.0);
assert!(table.select(pk.clone()).is_some());
assert_eq!(table.select(pk).unwrap().field, 1.0);
}
});
}
Expand Down Expand Up @@ -286,8 +286,8 @@ fn test_space_update_query_non_unique_sync() {
};
{
let table = TestSyncWorkTable::load_from_file(config).await.unwrap();
assert!(table.select(pk.clone().into()).is_some());
assert_eq!(table.select(pk.into()).unwrap().another, 13);
assert!(table.select(pk.clone()).is_some());
assert_eq!(table.select(pk).unwrap().another, 13);
}
});
}
Expand Down Expand Up @@ -333,7 +333,7 @@ fn test_space_delete_sync() {
};
{
let table = TestSyncWorkTable::load_from_file(config).await.unwrap();
assert!(table.select(pk.into()).is_none());
assert!(table.select(pk).is_none());
}
});
}
Expand Down Expand Up @@ -372,7 +372,7 @@ fn test_space_delete_query_sync() {
};
{
let table = TestSyncWorkTable::load_from_file(config).await.unwrap();
assert!(table.select(pk.into()).is_none());
assert!(table.select(pk).is_none());
}
});
}
28 changes: 14 additions & 14 deletions tests/persistence/sync/string_secondary_index.rs
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ fn test_space_insert_sync() {
};
{
let table = TestSyncWorkTable::load_from_file(config).await.unwrap();
assert!(table.select(pk.into()).is_some());
assert!(table.select(pk).is_some());
assert_eq!(table.0.pk_gen.get_state(), pk + 1)
}
});
Expand Down Expand Up @@ -109,7 +109,7 @@ fn test_space_insert_many_sync() {
let table = TestSyncWorkTable::load_from_file(config).await.unwrap();
let last = *pks.last().unwrap();
for pk in pks {
assert!(table.select(pk.into()).is_some());
assert!(table.select(pk).is_some());
}
assert_eq!(table.0.pk_gen.get_state(), last + 1)
}
Expand Down Expand Up @@ -155,16 +155,16 @@ fn test_space_update_full_sync() {
.unwrap();
table.wait_for_ops().await;
assert_eq!(
table.select(row.id.into()).unwrap().another,
table.select(row.id).unwrap().another,
"Some string to test updated".to_string()
);
row.id
};
{
let table = TestSyncWorkTable::load_from_file(config).await.unwrap();
assert!(table.select(pk.into()).is_some());
assert!(table.select(pk).is_some());
assert_eq!(
table.select(pk.into()).unwrap().another,
table.select(pk).unwrap().another,
"Some string to test updated".to_string()
);
assert_eq!(table.0.pk_gen.get_state(), pk + 1)
Expand Down Expand Up @@ -205,7 +205,7 @@ fn test_space_update_query_pk_sync() {
AnotherByIdQuery {
another: "Some string to test updated".to_string(),
},
row.id.into(),
row.id,
)
.await
.unwrap();
Expand All @@ -214,9 +214,9 @@ fn test_space_update_query_pk_sync() {
};
{
let table = TestSyncWorkTable::load_from_file(config).await.unwrap();
assert!(table.select(pk.into()).is_some());
assert!(table.select(pk).is_some());
assert_eq!(
table.select(pk.into()).unwrap().another,
table.select(pk).unwrap().another,
"Some string to test updated".to_string()
);
assert_eq!(table.0.pk_gen.get_state(), pk + 1)
Expand Down Expand Up @@ -265,8 +265,8 @@ fn test_space_update_query_unique_sync() {
};
{
let table = TestSyncWorkTable::load_from_file(config).await.unwrap();
assert!(table.select(pk.into()).is_some());
assert_eq!(table.select(pk.into()).unwrap().field, 1.0);
assert!(table.select(pk).is_some());
assert_eq!(table.select(pk).unwrap().field, 1.0);
assert_eq!(table.0.pk_gen.get_state(), pk + 1)
}
});
Expand Down Expand Up @@ -317,9 +317,9 @@ fn test_space_update_query_non_unique_sync() {
};
{
let table = TestSyncWorkTable::load_from_file(config).await.unwrap();
assert!(table.select(pk.into()).is_some());
assert!(table.select(pk).is_some());
assert_eq!(
table.select(pk.into()).unwrap().another,
table.select(pk).unwrap().another,
"Some string to test updated".to_string()
);
assert_eq!(table.0.pk_gen.get_state(), pk + 1)
Expand Down Expand Up @@ -361,7 +361,7 @@ fn test_space_delete_sync() {
};
{
let table = TestSyncWorkTable::load_from_file(config).await.unwrap();
assert!(table.select(pk.into()).is_none());
assert!(table.select(pk).is_none());
assert_eq!(table.0.pk_gen.get_state(), pk + 1)
}
});
Expand Down Expand Up @@ -401,7 +401,7 @@ fn test_space_delete_query_sync() {
};
{
let table = TestSyncWorkTable::load_from_file(config).await.unwrap();
assert!(table.select(pk.into()).is_none());
assert!(table.select(pk).is_none());
assert_eq!(table.0.pk_gen.get_state(), pk + 1)
}
});
Expand Down
Loading
Loading