angee.graphql.data.metadata
Metadata for Angee model-backed data resource surfaces.
DATA_RESOURCE_METADATA_ATTR
Attribute attached to schema surfaces that contribute model resource metadata.
DataRelationAxisMetadata
@dataclass(frozen=True, slots=True)
class DataRelationAxisMetadata()Metadata for a relation group axis and its public identity lookup.
DataGroupAliasMetadata
@dataclass(frozen=True, slots=True)
class DataGroupAliasMetadata()Metadata for a display field that groups through another aggregate axis.
DataGroupBucketFilterValueMapMetadata
@dataclass(frozen=True, slots=True)
class DataGroupBucketFilterValueMapMetadata()One backend-owned group bucket value rewrite for drill-down filters.
DataGroupBucketFilterMetadata
@dataclass(frozen=True, slots=True)
class DataGroupBucketFilterMetadata()Backend-owned predicate metadata for drilling into one group bucket.
DataGroupExtractionMetadata
@dataclass(frozen=True, slots=True)
class DataGroupExtractionMetadata()One extraction supported by a group dimension, such as month or day.
DataGroupDimensionMetadata
@dataclass(frozen=True, slots=True)
class DataGroupDimensionMetadata()Backend-owned grouped bucket dimension metadata.
DataAggregateMeasureMetadata
@dataclass(frozen=True, slots=True)
class DataAggregateMeasureMetadata()Aggregate measure selectable for one resource.
DataDefaultSortMetadata
@dataclass(frozen=True, slots=True)
class DataDefaultSortMetadata()One model default ordering term exposed through the resource order input.
DataResourceRoots
@dataclass(frozen=True, slots=True)
class DataResourceRoots()GraphQL wire root names emitted for one model data resource.
DataResourceTypeNames
@dataclass(frozen=True, slots=True)
class DataResourceTypeNames()GraphQL type names owned or referenced by one data resource.
DataResourceEnumValueMetadata
@dataclass(frozen=True, slots=True)
class DataResourceEnumValueMetadata()One enum value exposed by a resource field.
DataResourceFieldMetadata
@dataclass(frozen=True, slots=True)
class DataResourceFieldMetadata()Field capability metadata emitted for one model resource field.
DataResourceMetadata
@dataclass(frozen=True, slots=True)
class DataResourceMetadata()Internal metadata for one Angee model data resource.
data_resource_metadata
def data_resource_metadata(
surface: object) -> tuple[DataResourceMetadata, ...]Return model resource metadata attached to surface.
resource_wire_field_name
def resource_wire_field_name(surface: type | None,
name: str | None) -> str | NoneReturn the actual GraphQL wire field name for a Strawberry surface field.
resource_wire_field_names
def resource_wire_field_names(
surface: type | None, *, exclude: tuple[str, ...] = ()) -> tuple[str, ...]Return all declared GraphQL wire field names for a Strawberry surface.
resource_type_name
def resource_type_name(surface: type | None) -> str | NoneReturn the GraphQL type name for surface when present.
make_data_resource_metadata
def make_data_resource_metadata(
*,
model: type[models.Model] | None = None,
roots: DataResourceRoots,
type_names: DataResourceTypeNames,
capabilities: tuple[str, ...],
node_type: type | None = None,
filter_type: type | None = None,
order_type: type | None = None,
filter_fields: tuple[str, ...] = (),
order_fields: tuple[str, ...] = (),
aggregate_fields: tuple[str, ...] = (),
group_by_fields: tuple[str, ...] = (),
group_dimensions: tuple[DataGroupDimensionMetadata, ...] = (),
aggregate_measures: tuple[DataAggregateMeasureMetadata, ...] = (),
default_measures: tuple[DataAggregateMeasureMetadata, ...] = (),
default_sort: tuple[DataDefaultSortMetadata, ...] = (),
create_input_type: type | None = None,
update_input_type: type | None = None,
create_fields: tuple[str, ...] = (),
update_fields: tuple[str, ...] = (),
required_create_fields: tuple[str, ...] = (),
revision_fields: tuple[str, ...] = (),
relation_axes: tuple[DataRelationAxisMetadata, ...] = (),
group_aliases: tuple[DataGroupAliasMetadata, ...] = (),
fields: tuple[DataResourceFieldMetadata, ...] = (),
model_label: str | None = None,
public_id_field: str = PUBLIC_ID_FIELD_NAME,
row_model: str = "server") -> DataResourceMetadataBuild one resource metadata contribution from an owning schema surface.
model is the owning Django model for a model-backed resource. A computed (non-model) resource passes model=None and a dotted model_label (e.g. "platform.addon"); the model is only ever used internally (it is {"wire": False}), so the wire payload is identical either way.
row_model is the client/server boundary signal the frontend reads ("server" by default — Hasura where/order_by/limit + the _groups aggregate; "client" for a small computed set that fetches once and filters/sorts/paginates/groups in the browser).
model_resource_fields
def model_resource_fields(
model: type[models.Model],
fields: tuple[str, ...],
*,
filter_fields: tuple[str, ...] = (),
order_fields: tuple[str, ...] = (),
aggregate_fields: tuple[str, ...] = (),
group_by_fields: tuple[str, ...] = (),
create_fields: tuple[str, ...] = (),
update_fields: tuple[str, ...] = (),
required_create_fields: tuple[str, ...] = (),
relation_axes: tuple[DataRelationAxisMetadata, ...] = ()
) -> tuple[DataResourceFieldMetadata, ...]Return resource metadata for model fields exposed outside the node class.
Same-row model extensions can expose fields through Strawberry type extensions. The node class that owns the Hasura resource cannot import those downstream extension classes, so this builds matching field metadata directly from the composed Django model fields.
attach_data_resource_metadata
def attach_data_resource_metadata(
surface: type[_SurfaceT],
metadata: DataResourceMetadata) -> type[_SurfaceT]Attach model resource metadata to a generated Strawberry surface.
merge_data_resources
def merge_data_resources(
metadata: tuple[DataResourceMetadata, ...]
) -> tuple[DataResourceMetadata, ...]Merge per-surface resource contributions into one resource per model.
serialize_data_resources
def serialize_data_resources(metadata: tuple[DataResourceMetadata, ...], *,
schema_name: str) -> list[dict[str, object]]Return a JSON-safe schema-extension payload for resource metadata.
model_field_scalar
def model_field_scalar(field: models.Field[Any, Any]) -> str | NoneReturn the GraphQL scalar a Django field's column type maps to, or None.
The single owner of Django-field-to-scalar classification, shared by the model-derived resource field metadata and the Hasura group-dimension keys. Relations, enums, and lists carry no scalar of their own; callers gate on kind.