Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions crates/evops-models/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
pub use self::common::{PgLimit, PgLimitError};
pub use self::error::{ApiError, ApiResult};
pub use self::services::event::{
EVENT_DESCRIPTION_MAX_LEN, EVENT_DESCRIPTION_MIN_LEN, EVENT_MAX_IMAGES, EVENT_MAX_TAGS,
Expand All @@ -6,6 +7,9 @@ pub use self::services::event::{
EventTagIds, EventTagIdsError, EventTags, EventTagsError, EventTitle, EventTitleError,
NewEventForm,
};
pub use self::services::language::{
LANGUAGE_MAX_LEN, LANGUAGE_MIN_LEN, Language, LanguageId, LanguageName, LanguageNameError,
};
pub use self::services::tag::{
NewTagForm, TAG_ALIAS_MAX_LEN, TAG_ALIAS_MIN_LEN, TAG_MAX_ALIASES, TAG_NAME_MAX_LEN,
TAG_NAME_MIN_LEN, TAG_NAME_REGEX, Tag, TagAlias, TagAliasError, TagAliases, TagAliasesError,
Expand All @@ -15,8 +19,6 @@ pub use self::services::user::{
NewUserForm, USER_NAME_MAX_LEN, USER_NAME_MIN_LEN, User, UserId, UserName, UserNameError,
};

pub use self::common::{PgLimit, PgLimitError};

mod common;
mod error;
mod services;
1 change: 1 addition & 0 deletions crates/evops-models/src/services.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
pub mod event;
pub mod language;
pub mod tag;
pub mod user;
16 changes: 16 additions & 0 deletions crates/evops-models/src/services/language.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
use nutype::nutype;
use uuid::Uuid;

#[nutype(derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Display))]
pub struct LanguageId(Uuid);

pub const LANGUAGE_MIN_LEN: usize = 1;
pub const LANGUAGE_MAX_LEN: usize = 32;

#[nutype(new_unchecked, validate(len_char_max = LANGUAGE_MAX_LEN, not_empty), derive(Debug))]
pub struct LanguageName(String);

pub struct Language {
pub id: LanguageId,
pub name: LanguageName,
}
18 changes: 17 additions & 1 deletion proto/evops/api/v1/api.proto
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,11 @@ service EventService {
returns (stream EventServiceFindImageResponse);
}

service LanguageService {
// Adds a new language to the system.
rpc Add(LanguageServiceAddRequest) returns (LanguageServiceAddResponse);
}

// Manages event tags.
service TagService {
// Lists all tags.
Expand All @@ -28,7 +33,8 @@ service TagService {
// Retrieves a tag by ID.
rpc Find(TagServiceFindRequest) returns (TagServiceFindResponse);
// Get relevant tag IDs for an event description.
rpc GetTagsByDescription(TagServiceGetTagsByDescriptionRequest) returns (TagServiceGetTagsByDescriptionResponse);
rpc GetTagsByDescription(TagServiceGetTagsByDescriptionRequest)
returns (TagServiceGetTagsByDescriptionResponse);
}

// Manages user accounts.
Expand All @@ -41,6 +47,16 @@ service UserService {
rpc Find(UserServiceFindRequest) returns (UserServiceFindResponse);
}

message LanguageServiceAddRequest {
// Name of the new language.
string name = 1;
}

message LanguageServiceAddResponse {
// UUID of the added language.
string language_id = 1;
}

message TagServiceGetTagsByDescriptionRequest {
// Description to predict tags for.
string description = 1;
Expand Down