75 lines
1.6 KiB
Plaintext
75 lines
1.6 KiB
Plaintext
using extension auth;
|
|
|
|
module default {
|
|
global currentUser := (
|
|
assert_single((
|
|
select User
|
|
filter .identity = global ext::auth::ClientTokenIdentity
|
|
))
|
|
);
|
|
|
|
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 {
|
|
on target delete allow;
|
|
};
|
|
}
|
|
|
|
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;
|
|
user: User;
|
|
input_cost: float32;
|
|
output_cost: float32;
|
|
input_token: int32;
|
|
output_token: int32;
|
|
required date: datetime {
|
|
default := datetime_current();
|
|
}
|
|
}
|
|
}
|