using extension auth; module default { global current_user_id: uuid; global currentUser := ( select User filter .id = global current_user_id ); 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; } type Conversation { required name: str; required user: User { on target delete delete source; }; 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; required date: datetime { default := datetime_current(); } } type Usage { required model_id: str; required user: User; input_cost: float32; output_cost: float32; input_token: int32; output_token: int32; required date: datetime { default := datetime_current(); } } }