using extension auth; module default { global currentUser := ( assert_single(( select User filter .identity = global ext::auth::ClientTokenIdentity )) ); type User { required setting: Setting; required identity: ext::auth::Identity; } type Key { required name: str; required company: str; required key: str; required date: datetime { default := datetime_current(); } } type Setting { default_model: str; multi keys: Key { on target delete allow; }; } type Conversation { required name: str; required user: User { on target delete allow; }; required date: datetime { default := datetime_current(); } } type Area { required position: int64; required conversation: Conversation { on target delete delete source; }; } type Message { model_id: str; selected: bool; required role: str; required content: str; required area: Area { on target delete delete source; }; required conversation: Conversation { on target delete delete source; }; required date: datetime { default := datetime_current(); } } type Usage { required model_id: str; user: User; input_cost: float32; output_cost: float32; input_token: int32; output_token: int32; required date: datetime { default := datetime_current(); } } }