1use sea_orm::entity::prelude::*;
2
3use crate::llm::db::ModelId;
4
5/// An LLM usage record.
6#[derive(Clone, Debug, PartialEq, DeriveEntityModel)]
7#[sea_orm(table_name = "usages")]
8pub struct Model {
9 #[sea_orm(primary_key)]
10 pub id: i32,
11 /// The ID of the Zed user.
12 ///
13 /// Corresponds to the `users` table in the primary collab database.
14 pub user_id: i32,
15 pub model_id: ModelId,
16 pub requests_this_minute: i32,
17 pub tokens_this_minute: i64,
18 pub requests_this_day: i32,
19 pub tokens_this_day: i64,
20 pub requests_this_month: i32,
21 pub tokens_this_month: i64,
22}
23
24#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
25pub enum Relation {
26 #[sea_orm(
27 belongs_to = "super::model::Entity",
28 from = "Column::ModelId",
29 to = "super::model::Column::Id"
30 )]
31 Model,
32}
33
34impl Related<super::model::Entity> for Entity {
35 fn to() -> RelationDef {
36 Relation::Model.def()
37 }
38}
39
40impl ActiveModelBehavior for ActiveModel {}