feat: init
This commit is contained in:
@@ -0,0 +1,794 @@
|
||||
use serde::{Deserialize, Deserializer, Serialize, Serializer};
|
||||
use sqlx::encode::IsNull;
|
||||
use sqlx::error::BoxDynError;
|
||||
use sqlx::postgres::{PgArgumentBuffer, PgHasArrayType, PgTypeInfo, PgValueRef};
|
||||
use sqlx::{Decode, Encode, Postgres, Type};
|
||||
use std::fmt;
|
||||
use std::str::FromStr;
|
||||
|
||||
pub type JsonValue = serde_json::Value;
|
||||
|
||||
macro_rules! string_enum {
|
||||
(
|
||||
$(#[$meta:meta])*
|
||||
pub enum $name:ident {
|
||||
$( $variant:ident => $value:literal ),+ $(,)?
|
||||
}
|
||||
) => {
|
||||
$(#[$meta])*
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, utoipa::ToSchema)]
|
||||
pub enum $name {
|
||||
$( $variant, )+
|
||||
}
|
||||
|
||||
impl $name {
|
||||
pub const fn as_str(self) -> &'static str {
|
||||
match self {
|
||||
$( Self::$variant => $value, )+
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Display for $name {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
f.write_str(self.as_str())
|
||||
}
|
||||
}
|
||||
|
||||
impl FromStr for $name {
|
||||
type Err = ();
|
||||
|
||||
fn from_str(value: &str) -> Result<Self, Self::Err> {
|
||||
Ok(match value {
|
||||
$( $value => Self::$variant, )+
|
||||
_ => Self::Unknown,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
impl Serialize for $name {
|
||||
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||
where
|
||||
S: Serializer,
|
||||
{
|
||||
serializer.serialize_str(self.as_str())
|
||||
}
|
||||
}
|
||||
|
||||
impl<'de> Deserialize<'de> for $name {
|
||||
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
||||
where
|
||||
D: Deserializer<'de>,
|
||||
{
|
||||
let value = String::deserialize(deserializer)?;
|
||||
Ok(value.parse().unwrap_or(Self::Unknown))
|
||||
}
|
||||
}
|
||||
|
||||
impl Type<Postgres> for $name {
|
||||
fn type_info() -> PgTypeInfo {
|
||||
<String as Type<Postgres>>::type_info()
|
||||
}
|
||||
|
||||
fn compatible(ty: &PgTypeInfo) -> bool {
|
||||
<String as Type<Postgres>>::compatible(ty)
|
||||
}
|
||||
}
|
||||
|
||||
impl<'r> Decode<'r, Postgres> for $name {
|
||||
fn decode(value: PgValueRef<'r>) -> Result<Self, BoxDynError> {
|
||||
let value = <String as Decode<Postgres>>::decode(value)?;
|
||||
Ok(value.parse().unwrap_or(Self::Unknown))
|
||||
}
|
||||
}
|
||||
|
||||
impl<'q> Encode<'q, Postgres> for $name {
|
||||
fn encode_by_ref(&self, buf: &mut PgArgumentBuffer) -> Result<IsNull, BoxDynError> {
|
||||
<&str as Encode<Postgres>>::encode_by_ref(&self.as_str(), buf)
|
||||
}
|
||||
|
||||
fn size_hint(&self) -> usize {
|
||||
<&str as Encode<Postgres>>::size_hint(&self.as_str())
|
||||
}
|
||||
}
|
||||
|
||||
impl PgHasArrayType for $name {
|
||||
fn array_type_info() -> PgTypeInfo {
|
||||
<String as PgHasArrayType>::array_type_info()
|
||||
}
|
||||
|
||||
fn array_compatible(ty: &PgTypeInfo) -> bool {
|
||||
<String as PgHasArrayType>::array_compatible(ty)
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
/// Cross-domain lifecycle/status values persisted as snake_case text.
|
||||
pub enum Status {
|
||||
Active => "active",
|
||||
Inactive => "inactive",
|
||||
Enabled => "enabled",
|
||||
Disabled => "disabled",
|
||||
Pending => "pending",
|
||||
Queued => "queued",
|
||||
Running => "running",
|
||||
Processing => "processing",
|
||||
Completed => "completed",
|
||||
Success => "success",
|
||||
Failed => "failed",
|
||||
Error => "error",
|
||||
Canceled => "canceled",
|
||||
Cancelled => "cancelled",
|
||||
Draft => "draft",
|
||||
Open => "open",
|
||||
Closed => "closed",
|
||||
Merged => "merged",
|
||||
Archived => "archived",
|
||||
Deleted => "deleted",
|
||||
Revoked => "revoked",
|
||||
Expired => "expired",
|
||||
Accepted => "accepted",
|
||||
Rejected => "rejected",
|
||||
Approved => "approved",
|
||||
Healthy => "healthy",
|
||||
Degraded => "degraded",
|
||||
Unhealthy => "unhealthy",
|
||||
Online => "online",
|
||||
Offline => "offline",
|
||||
Added => "added",
|
||||
Modified => "modified",
|
||||
Removed => "removed",
|
||||
Renamed => "renamed",
|
||||
Copied => "copied",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum State {
|
||||
Open => "open",
|
||||
Closed => "closed",
|
||||
Merged => "merged",
|
||||
Draft => "draft",
|
||||
Pending => "pending",
|
||||
Queued => "queued",
|
||||
Running => "running",
|
||||
Success => "success",
|
||||
Failure => "failure",
|
||||
Failed => "failed",
|
||||
Error => "error",
|
||||
Skipped => "skipped",
|
||||
Blocked => "blocked",
|
||||
Clean => "clean",
|
||||
Dirty => "dirty",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum Role {
|
||||
Owner => "owner",
|
||||
Admin => "admin",
|
||||
Maintainer => "maintainer",
|
||||
Member => "member",
|
||||
Guest => "guest",
|
||||
Viewer => "viewer",
|
||||
Editor => "editor",
|
||||
Contributor => "contributor",
|
||||
Moderator => "moderator",
|
||||
User => "user",
|
||||
Bot => "bot",
|
||||
Agent => "agent",
|
||||
Assistant => "assistant",
|
||||
System => "system",
|
||||
Author => "author",
|
||||
Reviewer => "reviewer",
|
||||
Assignee => "assignee",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum Visibility {
|
||||
Public => "public",
|
||||
Private => "private",
|
||||
Internal => "internal",
|
||||
Workspace => "workspace",
|
||||
Protected => "protected",
|
||||
Hidden => "hidden",
|
||||
Secret => "secret",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum Priority {
|
||||
None => "none",
|
||||
Low => "low",
|
||||
Medium => "medium",
|
||||
High => "high",
|
||||
Critical => "critical",
|
||||
Urgent => "urgent",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum MessageRole {
|
||||
System => "system",
|
||||
User => "user",
|
||||
Assistant => "assistant",
|
||||
Agent => "agent",
|
||||
Tool => "tool",
|
||||
Developer => "developer",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum MessageType {
|
||||
Text => "text",
|
||||
Markdown => "markdown",
|
||||
Html => "html",
|
||||
System => "system",
|
||||
Event => "event",
|
||||
File => "file",
|
||||
Image => "image",
|
||||
Code => "code",
|
||||
ToolCall => "tool_call",
|
||||
ToolResult => "tool_result",
|
||||
Audio => "audio",
|
||||
Video => "video",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum ContentFormat {
|
||||
PlainText => "plain_text",
|
||||
Markdown => "markdown",
|
||||
Html => "html",
|
||||
Json => "json",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum EventType {
|
||||
Created => "created",
|
||||
Updated => "updated",
|
||||
Deleted => "deleted",
|
||||
Closed => "closed",
|
||||
Reopened => "reopened",
|
||||
Assigned => "assigned",
|
||||
Unassigned => "unassigned",
|
||||
Labeled => "labeled",
|
||||
Unlabeled => "unlabeled",
|
||||
Commented => "commented",
|
||||
Mentioned => "mentioned",
|
||||
Pushed => "pushed",
|
||||
Merged => "merged",
|
||||
Reviewed => "reviewed",
|
||||
Archived => "archived",
|
||||
Restored => "restored",
|
||||
Joined => "joined",
|
||||
Left => "left",
|
||||
Invited => "invited",
|
||||
Accepted => "accepted",
|
||||
Revoked => "revoked",
|
||||
DraftReady => "draft_ready",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum TargetType {
|
||||
User => "user",
|
||||
Workspace => "workspace",
|
||||
Repo => "repo",
|
||||
Issue => "issue",
|
||||
PullRequest => "pull_request",
|
||||
Channel => "channel",
|
||||
Message => "message",
|
||||
Conversation => "conversation",
|
||||
Agent => "agent",
|
||||
AiModel => "ai_model",
|
||||
Commit => "commit",
|
||||
Branch => "branch",
|
||||
Release => "release",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum NotificationType {
|
||||
Mention => "mention",
|
||||
Assignment => "assignment",
|
||||
Review => "review",
|
||||
Comment => "comment",
|
||||
Build => "build",
|
||||
Security => "security",
|
||||
Billing => "billing",
|
||||
System => "system",
|
||||
Digest => "digest",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum DeliveryChannel {
|
||||
Email => "email",
|
||||
Web => "web",
|
||||
Push => "push",
|
||||
Slack => "slack",
|
||||
Discord => "discord",
|
||||
Webhook => "webhook",
|
||||
Sms => "sms",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum SubscriptionLevel {
|
||||
All => "all",
|
||||
Participating => "participating",
|
||||
Mention => "mention",
|
||||
Watch => "watch",
|
||||
Ignore => "ignore",
|
||||
None => "none",
|
||||
Custom => "custom",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum Provider {
|
||||
Github => "github",
|
||||
Gitlab => "gitlab",
|
||||
Google => "google",
|
||||
Slack => "slack",
|
||||
Discord => "discord",
|
||||
Email => "email",
|
||||
Web => "web",
|
||||
Push => "push",
|
||||
Openai => "openai",
|
||||
Anthropic => "anthropic",
|
||||
Gemini => "gemini",
|
||||
Ollama => "ollama",
|
||||
Azure => "azure",
|
||||
Aws => "aws",
|
||||
Stripe => "stripe",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum AgentType {
|
||||
Assistant => "assistant",
|
||||
Automation => "automation",
|
||||
Reviewer => "reviewer",
|
||||
Triage => "triage",
|
||||
Scheduler => "scheduler",
|
||||
Bot => "bot",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum AiModelType {
|
||||
Chat => "chat",
|
||||
Completion => "completion",
|
||||
Embedding => "embedding",
|
||||
Reranker => "reranker",
|
||||
Image => "image",
|
||||
Audio => "audio",
|
||||
Multimodal => "multimodal",
|
||||
Moderation => "moderation",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum ConversationType {
|
||||
Chat => "chat",
|
||||
Issue => "issue",
|
||||
PullRequest => "pull_request",
|
||||
Review => "review",
|
||||
Agent => "agent",
|
||||
Support => "support",
|
||||
Incident => "incident",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum StepType {
|
||||
Model => "model",
|
||||
Tool => "tool",
|
||||
Reasoning => "reasoning",
|
||||
Retrieval => "retrieval",
|
||||
Planning => "planning",
|
||||
Execution => "execution",
|
||||
Validation => "validation",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum TriggerType {
|
||||
Manual => "manual",
|
||||
Schedule => "schedule",
|
||||
Webhook => "webhook",
|
||||
Event => "event",
|
||||
Issue => "issue",
|
||||
PullRequest => "pull_request",
|
||||
Push => "push",
|
||||
Message => "message",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum RelationType {
|
||||
Closes => "closes",
|
||||
Fixes => "fixes",
|
||||
References => "references",
|
||||
Blocks => "blocks",
|
||||
Duplicates => "duplicates",
|
||||
Related => "related",
|
||||
Implements => "implements",
|
||||
Mentions => "mentions",
|
||||
Resolves => "resolves",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum RequestType {
|
||||
Join => "join",
|
||||
Invite => "invite",
|
||||
Access => "access",
|
||||
Approval => "approval",
|
||||
Billing => "billing",
|
||||
Delete => "delete",
|
||||
Transfer => "transfer",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum DeviceType {
|
||||
Desktop => "desktop",
|
||||
Laptop => "laptop",
|
||||
Mobile => "mobile",
|
||||
Tablet => "tablet",
|
||||
Browser => "browser",
|
||||
Cli => "cli",
|
||||
Api => "api",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum KeyType {
|
||||
Rsa => "rsa",
|
||||
Ed25519 => "ed25519",
|
||||
Ecdsa => "ecdsa",
|
||||
Dsa => "dsa",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum PasswordAlgorithm {
|
||||
Argon2id => "argon2id",
|
||||
Bcrypt => "bcrypt",
|
||||
Scrypt => "scrypt",
|
||||
Pbkdf2 => "pbkdf2",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum DigestFrequency {
|
||||
Never => "never",
|
||||
Daily => "daily",
|
||||
Weekly => "weekly",
|
||||
Monthly => "monthly",
|
||||
Realtime => "realtime",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum GitService {
|
||||
Local => "local",
|
||||
Gitea => "gitea",
|
||||
Gitlab => "gitlab",
|
||||
Github => "github",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum FeedbackType {
|
||||
Bug => "bug",
|
||||
Quality => "quality",
|
||||
Safety => "safety",
|
||||
Performance => "performance",
|
||||
Suggestion => "suggestion",
|
||||
Other => "other",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum ParticipantType {
|
||||
User => "user",
|
||||
Agent => "agent",
|
||||
Bot => "bot",
|
||||
System => "system",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum SummaryType {
|
||||
Short => "short",
|
||||
Detailed => "detailed",
|
||||
Rolling => "rolling",
|
||||
Final => "final",
|
||||
ActionItems => "action_items",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum LinkType {
|
||||
Primary => "primary",
|
||||
Mirror => "mirror",
|
||||
Notification => "notification",
|
||||
Automation => "automation",
|
||||
Related => "related",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum ChannelType {
|
||||
Public => "public",
|
||||
Private => "private",
|
||||
Direct => "direct",
|
||||
Group => "group",
|
||||
Repo => "repo",
|
||||
System => "system",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum MergeStrategyKind {
|
||||
Merge => "merge",
|
||||
Squash => "squash",
|
||||
Rebase => "rebase",
|
||||
FastForward => "fast_forward",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum PricingUnit {
|
||||
Token => "token",
|
||||
OneKTokens => "1k_tokens",
|
||||
OneMTokens => "1m_tokens",
|
||||
Request => "request",
|
||||
Image => "image",
|
||||
Minute => "minute",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum Theme {
|
||||
System => "system",
|
||||
Light => "light",
|
||||
Dark => "dark",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum ColorScheme {
|
||||
System => "system",
|
||||
Light => "light",
|
||||
Dark => "dark",
|
||||
HighContrast => "high_contrast",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum Density {
|
||||
Compact => "compact",
|
||||
Comfortable => "comfortable",
|
||||
Spacious => "spacious",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum FontSize {
|
||||
Small => "small",
|
||||
Medium => "medium",
|
||||
Large => "large",
|
||||
ExtraLarge => "extra_large",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum Scope {
|
||||
Read => "read",
|
||||
Write => "write",
|
||||
Admin => "admin",
|
||||
RepoRead => "repo:read",
|
||||
RepoWrite => "repo:write",
|
||||
IssueRead => "issue:read",
|
||||
IssueWrite => "issue:write",
|
||||
PullRequestRead => "pull_request:read",
|
||||
PullRequestWrite => "pull_request:write",
|
||||
WorkspaceRead => "workspace:read",
|
||||
WorkspaceWrite => "workspace:write",
|
||||
UserRead => "user:read",
|
||||
UserWrite => "user:write",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum Permission {
|
||||
Read => "read",
|
||||
Write => "write",
|
||||
Admin => "admin",
|
||||
Execute => "execute",
|
||||
ManageMembers => "manage_members",
|
||||
ManageSettings => "manage_settings",
|
||||
ManageWebhooks => "manage_webhooks",
|
||||
ManageBilling => "manage_billing",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum Modality {
|
||||
Text => "text",
|
||||
Image => "image",
|
||||
Audio => "audio",
|
||||
Video => "video",
|
||||
File => "file",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum AiFeature {
|
||||
Streaming => "streaming",
|
||||
ToolCalling => "tool_calling",
|
||||
JsonMode => "json_mode",
|
||||
Vision => "vision",
|
||||
Audio => "audio",
|
||||
Reasoning => "reasoning",
|
||||
Caching => "caching",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum PresenceStatus {
|
||||
Online => "online",
|
||||
Idle => "idle",
|
||||
Dnd => "dnd",
|
||||
Invisible => "invisible",
|
||||
Offline => "offline",
|
||||
Away => "away",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum ActivityType {
|
||||
Playing => "playing",
|
||||
Listening => "listening",
|
||||
Watching => "watching",
|
||||
Streaming => "streaming",
|
||||
Competing => "competing",
|
||||
Custom => "custom",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum SyncDirection {
|
||||
Inbound => "inbound",
|
||||
Outbound => "outbound",
|
||||
Bidirectional => "bidirectional",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum OverwriteTarget {
|
||||
User => "user",
|
||||
Role => "role",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum EmbedType {
|
||||
Link => "link",
|
||||
Article => "article",
|
||||
Image => "image",
|
||||
Video => "video",
|
||||
Rich => "rich",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum ChannelKind {
|
||||
Text => "text",
|
||||
Voice => "voice",
|
||||
Stage => "stage",
|
||||
Forum => "forum",
|
||||
Announcement => "announcement",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum ForumSortOrder {
|
||||
LatestActivity => "latest_activity",
|
||||
CreationDate => "creation_date",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum ForumLayout {
|
||||
Default => "default",
|
||||
ListView => "list_view",
|
||||
GalleryView => "gallery_view",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum StagePrivacyLevel {
|
||||
Public => "public",
|
||||
GuildOnly => "guild_only",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum PollLayout {
|
||||
Default => "default",
|
||||
SingleChoice => "single_choice",
|
||||
MultipleChoice => "multiple_choice",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
|
||||
string_enum! {
|
||||
pub enum ArticleStatus {
|
||||
Draft => "draft",
|
||||
Scheduled => "scheduled",
|
||||
Published => "published",
|
||||
Archived => "archived",
|
||||
Unpublished => "unpublished",
|
||||
Unknown => "unknown",
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user