mirror of
https://github.com/salsa-rs/salsa.git
synced 2024-10-23 20:59:51 +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 storage = QueryStorage::Memoized;
|
||||||
let mut cycle = None;
|
let mut cycle = None;
|
||||||
let mut invoke = None;
|
let mut invoke = None;
|
||||||
|
let query_name = method.sig.ident.to_string();
|
||||||
let mut query_type = Ident::new(
|
let mut query_type = Ident::new(
|
||||||
&format!("{}Query", method.sig.ident.to_string().to_camel_case()),
|
&format!("{}Query", method.sig.ident.to_string().to_camel_case()),
|
||||||
Span::call_site(),
|
Span::call_site(),
|
||||||
|
@ -146,6 +147,7 @@ pub(crate) fn query_group(args: TokenStream, input: TokenStream) -> TokenStream
|
||||||
let lookup_keys = vec![value.clone()];
|
let lookup_keys = vec![value.clone()];
|
||||||
Some(Query {
|
Some(Query {
|
||||||
query_type: lookup_query_type,
|
query_type: lookup_query_type,
|
||||||
|
query_name: format!("lookup_{}", query_name),
|
||||||
fn_name: lookup_fn_name,
|
fn_name: lookup_fn_name,
|
||||||
attrs: vec![], // FIXME -- some automatically generated docs on this method?
|
attrs: vec![], // FIXME -- some automatically generated docs on this method?
|
||||||
storage: QueryStorage::InternedLookup {
|
storage: QueryStorage::InternedLookup {
|
||||||
|
@ -162,6 +164,7 @@ pub(crate) fn query_group(args: TokenStream, input: TokenStream) -> TokenStream
|
||||||
|
|
||||||
queries.push(Query {
|
queries.push(Query {
|
||||||
query_type,
|
query_type,
|
||||||
|
query_name,
|
||||||
fn_name: method.sig.ident,
|
fn_name: method.sig.ident,
|
||||||
attrs,
|
attrs,
|
||||||
storage,
|
storage,
|
||||||
|
@ -375,6 +378,7 @@ pub(crate) fn query_group(args: TokenStream, input: TokenStream) -> TokenStream
|
||||||
};
|
};
|
||||||
let keys = &query.keys;
|
let keys = &query.keys;
|
||||||
let value = &query.value;
|
let value = &query.value;
|
||||||
|
let query_name = &query.query_name;
|
||||||
|
|
||||||
// Emit the query struct and implement the Query trait on it.
|
// Emit the query struct and implement the Query trait on it.
|
||||||
output.extend(quote! {
|
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_INDEX: u16 = #query_index;
|
||||||
|
|
||||||
|
const QUERY_NAME: &'static str = #query_name;
|
||||||
|
|
||||||
fn query_storage(
|
fn query_storage(
|
||||||
group_storage: &Self::GroupStorage,
|
group_storage: &Self::GroupStorage,
|
||||||
) -> &std::sync::Arc<Self::Storage> {
|
) -> &std::sync::Arc<Self::Storage> {
|
||||||
|
@ -591,6 +597,7 @@ fn filter_attrs(attrs: Vec<Attribute>) -> (Vec<Attribute>, Vec<SalsaAttr>) {
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
struct Query {
|
struct Query {
|
||||||
fn_name: Ident,
|
fn_name: Ident,
|
||||||
|
query_name: String,
|
||||||
attrs: Vec<syn::Attribute>,
|
attrs: Vec<syn::Attribute>,
|
||||||
query_type: Ident,
|
query_type: Ident,
|
||||||
storage: QueryStorage,
|
storage: QueryStorage,
|
||||||
|
|
|
@ -469,6 +469,9 @@ pub trait Query<DB: Database>: Debug + Default + Sized + 'static {
|
||||||
/// A unique index identifying this query within the group.
|
/// A unique index identifying this query within the group.
|
||||||
const QUERY_INDEX: u16;
|
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.
|
/// Extact storage for this query from the storage for its group.
|
||||||
fn query_storage(group_storage: &Self::GroupStorage) -> &Arc<Self::Storage>;
|
fn query_storage(group_storage: &Self::GroupStorage) -> &Arc<Self::Storage>;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue