usage_measure.rs

 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 {}