1use crate::llm::db::UsageMeasureId;
2use sea_orm::entity::prelude::*;
3
4#[derive(
5 Copy, Clone, Debug, PartialEq, Eq, Hash, strum::EnumString, strum::Display, strum::EnumIter,
6)]
7#[strum(serialize_all = "snake_case")]
8pub enum UsageMeasure {
9 RequestsPerMinute,
10 TokensPerMinute,
11 InputTokensPerMinute,
12 OutputTokensPerMinute,
13 TokensPerDay,
14}
15
16#[derive(Clone, Debug, PartialEq, DeriveEntityModel)]
17#[sea_orm(table_name = "usage_measures")]
18pub struct Model {
19 #[sea_orm(primary_key)]
20 pub id: UsageMeasureId,
21 pub name: String,
22}
23
24#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
25pub enum Relation {
26 #[sea_orm(has_many = "super::usage::Entity")]
27 Usages,
28}
29
30impl Related<super::usage::Entity> for Entity {
31 fn to() -> RelationDef {
32 Relation::Usages.def()
33 }
34}
35
36impl ActiveModelBehavior for ActiveModel {}