mirror of
https://github.com/salsa-rs/salsa.git
synced 2024-10-23 12:49:57 +00:00
add a query_name
associated constant
This commit is contained in:
parent
b4c6e69faf
commit
5a1bf10ba6
2 changed files with 10 additions and 0 deletions
|
@ -41,6 +41,7 @@ pub(crate) fn query_group(args: TokenStream, input: TokenStream) -> TokenStream
|
|||
let mut storage = QueryStorage::Memoized;
|
||||
let mut cycle = None;
|
||||
let mut invoke = None;
|
||||
let query_name = method.sig.ident.to_string();
|
||||
let mut query_type = Ident::new(
|
||||
&format!("{}Query", method.sig.ident.to_string().to_camel_case()),
|
||||
Span::call_site(),
|
||||
|
@ -146,6 +147,7 @@ pub(crate) fn query_group(args: TokenStream, input: TokenStream) -> TokenStream
|
|||
let lookup_keys = vec![value.clone()];
|
||||
Some(Query {
|
||||
query_type: lookup_query_type,
|
||||
query_name: format!("lookup_{}", query_name),
|
||||
fn_name: lookup_fn_name,
|
||||
attrs: vec![], // FIXME -- some automatically generated docs on this method?
|
||||
storage: QueryStorage::InternedLookup {
|
||||
|
@ -162,6 +164,7 @@ pub(crate) fn query_group(args: TokenStream, input: TokenStream) -> TokenStream
|
|||
|
||||
queries.push(Query {
|
||||
query_type,
|
||||
query_name,
|
||||
fn_name: method.sig.ident,
|
||||
attrs,
|
||||
storage,
|
||||
|
@ -375,6 +378,7 @@ pub(crate) fn query_group(args: TokenStream, input: TokenStream) -> TokenStream
|
|||
};
|
||||
let keys = &query.keys;
|
||||
let value = &query.value;
|
||||
let query_name = &query.query_name;
|
||||
|
||||
// Emit the query struct and implement the Query trait on it.
|
||||
output.extend(quote! {
|
||||
|
@ -398,6 +402,8 @@ pub(crate) fn query_group(args: TokenStream, input: TokenStream) -> TokenStream
|
|||
|
||||
const QUERY_INDEX: u16 = #query_index;
|
||||
|
||||
const QUERY_NAME: &'static str = #query_name;
|
||||
|
||||
fn query_storage(
|
||||
group_storage: &Self::GroupStorage,
|
||||
) -> &std::sync::Arc<Self::Storage> {
|
||||
|
@ -591,6 +597,7 @@ fn filter_attrs(attrs: Vec<Attribute>) -> (Vec<Attribute>, Vec<SalsaAttr>) {
|
|||
#[derive(Debug)]
|
||||
struct Query {
|
||||
fn_name: Ident,
|
||||
query_name: String,
|
||||
attrs: Vec<syn::Attribute>,
|
||||
query_type: Ident,
|
||||
storage: QueryStorage,
|
||||
|
|
|
@ -469,6 +469,9 @@ pub trait Query<DB: Database>: Debug + Default + Sized + 'static {
|
|||
/// A unique index identifying this query within the group.
|
||||
const QUERY_INDEX: u16;
|
||||
|
||||
/// Name of the query method (e.g., `foo`)
|
||||
const QUERY_NAME: &'static str;
|
||||
|
||||
/// Extact storage for this query from the storage for its group.
|
||||
fn query_storage(group_storage: &Self::GroupStorage) -> &Arc<Self::Storage>;
|
||||
|
||||
|
|
Loading…
Reference in a new issue