Jade/dbschema/default.esdl
2024-08-03 16:22:33 +02:00

134 lines
3.1 KiB
Plaintext

using extension auth;
module default {
global currentUser := (
assert_single((
select User
filter .identity = global ext::auth::ClientTokenIdentity
))
);
global currentConversation := (
assert_single((
select Conversation
filter .user = global currentUser AND .selected = true
))
);
type User {
required setting: Setting;
required stripe_id: str;
required name: str;
required email: str;
required avatar: str;
required identity: ext::auth::Identity {
on source delete delete target;
}
}
type Key {
required name: str;
company: Company;
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 position: int32;
required selected: bool {
default := false;
};
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 {
required selected: bool;
required role: str;
required content: str;
required llm: LLM;
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 {
on target delete allow
};
required input_cost: float32;
required output_cost: float32;
required input_token: int32;
required output_token: int32;
required date: datetime {
default := datetime_current();
}
}
type LLM {
required name: str;
required context: str;
required temperature: float32;
required position: int32;
required to_delete: bool {
default := false;
};
required modelInfo: ModelInfo {
on target delete delete source;
};
required user: User {
on target delete delete source;
};
required max_tokens: int32;
custom_endpoint: CustomEndpoint {
on source delete delete target;
};
}
type CustomEndpoint {
required endpoint: str;
required key: str;
}
type Company {
required name: str;
required icon: str;
}
type ModelInfo {
required modelID: str;
required name: str;
required inputPrice: float32;
required outputPrice: float32;
required company: Company;
}
}