Skip to content
Merged
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
1 change: 0 additions & 1 deletion .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,4 @@ buck-out
# Dockderfile
docker/mono-engine-dockerfile
docker/mono-pg-dockerfile
docker/mono-ui-dockerfile
docker/aries-engine-dockerfile
2 changes: 1 addition & 1 deletion aria/contents/docs/getting-started/installation/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ To get started, you can clone the mega repository directly from GitHub.
git submodule update --init --recursive
docker buildx build -t mega:mono-pg-0.1-pre-release -f ./docker/mono-pg-dockerfile .
docker buildx build -t mega:mono-engine-0.1-pre-release -f ./docker/mono-engine-dockerfile .
docker buildx build -t mega:mono-ui-0.1-pre-release -f ./docker/mono-ui-dockerfile .
docker buildx build -t mega:mono-ui-0.1-pre-release -f ./moon/apps/web/Dockerfile .
```
</StepperItem>

Expand Down
1 change: 0 additions & 1 deletion common/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ idgenerator = { workspace = true }
serde = { workspace = true }
config = { workspace = true }
envsubst = { workspace = true }
rand = { workspace = true }
serde_json = { workspace = true }
regex = { workspace = true }
sea-orm = { workspace = true, features = ["macros"] }
Expand Down
21 changes: 0 additions & 21 deletions common/src/utils.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
use idgenerator::IdInstance;
use rand::prelude::*;
use regex::Regex;
use serde_json::{json, Value};

Expand All @@ -13,16 +12,6 @@ pub fn generate_id() -> i64 {
IdInstance::next_id()
}

pub fn generate_link() -> String {
let rng = rand::rng();
let str: String = rng
.sample_iter(rand::distr::Alphanumeric)
.take(8)
.map(char::from)
.collect();
str.to_uppercase()
}

pub const MEGA_BRANCH_NAME: &str = "refs/heads/main";

pub fn generate_rich_text(content: &str) -> String {
Expand Down Expand Up @@ -169,14 +158,4 @@ mod test {
let msg = "()(common): add new feature"; // unssupported characters in type
assert!(!check_conventional_commits_message(msg));
}

#[test]
fn test_link_generate() {
let link = generate_link();
println!("MR Link: '{:?}'", link);
assert!(
link.chars().count() == 8
&& link.chars().all(|c| !c.is_alphabetic() || c.is_uppercase())
)
}
}
2 changes: 1 addition & 1 deletion docker/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ docker buildx build -t mega:mono-engine-latest -f ./docker/mono-engine-dockerfil
# docker buildx build -t mega:mono-engine-latest-debug -f ./docker/mono-engine-dockerfile --build-arg BUILD_TYPE=debug .

# build frontend mono ui image
docker buildx build -t mega:mono-ui-latest-release -f ./docker/mono-ui-dockerfile .
docker buildx build -t mega:mono-ui-latest-release -f ./moon/apps/web/Dockerfile .

# build backend aries engine image (default in release mode)
docker buildx build -t mega:aries-engine-latest -f ./docker/aries-engine-dockerfile .
Expand Down
19 changes: 18 additions & 1 deletion jupiter/callisto/src/entity_ext/label.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
use sea_orm::entity::prelude::*;

use crate::label::Entity;
use crate::{
entity_ext::generate_id,
label::{self, Entity},
};

#[derive(Copy, Clone, Debug, EnumIter)]
pub enum Relation {
Expand All @@ -14,3 +17,17 @@ impl RelationTrait for Relation {
}
}
}

impl label::Model {
pub fn new(name: &str, color: &str, description: &str) -> Self {
let now = chrono::Utc::now().naive_utc();
Self {
id: generate_id(),
created_at: now,
updated_at: now,
name: name.to_owned(),
color: color.to_owned(),
description: description.to_owned(),
}
}
}
21 changes: 20 additions & 1 deletion jupiter/callisto/src/entity_ext/mega_issue.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
use sea_orm::entity::prelude::*;

use crate::mega_issue::Entity;
use crate::{
entity_ext::{generate_id, generate_link},
mega_issue::{self, Entity},
};

#[derive(Copy, Clone, Debug, EnumIter)]
pub enum Relation {
Expand Down Expand Up @@ -50,3 +53,19 @@ impl Related<crate::mega_conversation::Entity> for Entity {
None
}
}

impl mega_issue::Model {
pub fn new(title: String, author: String) -> Self {
let now = chrono::Utc::now().naive_utc();
Self {
id: generate_id(),
link: generate_link(),
title,
author,
status: "open".to_owned(),
created_at: now,
updated_at: now,
closed_at: None,
}
}
}
24 changes: 23 additions & 1 deletion jupiter/callisto/src/entity_ext/mega_mr.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
use sea_orm::entity::prelude::*;

use crate::mega_mr::Entity;
use crate::{
entity_ext::{generate_id, generate_link},
mega_mr::{self, Entity},
sea_orm_active_enums::MergeStatusEnum,
};

#[derive(Copy, Clone, Debug, EnumIter)]
pub enum Relation {
Expand Down Expand Up @@ -46,3 +50,21 @@ impl Related<crate::mega_conversation::Entity> for Entity {
None
}
}

impl mega_mr::Model {
pub fn new(path: String, title: String, from_hash: String, to_hash: String) -> Self {
let now = chrono::Utc::now().naive_utc();
Self {
id: generate_id(),
link: generate_link(),
title: title.to_owned(),
status: MergeStatusEnum::Open,
created_at: now,
updated_at: now,
merge_date: None,
path,
from_hash,
to_hash,
}
}
}
24 changes: 22 additions & 2 deletions jupiter/callisto/src/entity_ext/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,16 @@ pub fn generate_id() -> i64 {
IdInstance::next_id()
}

pub fn generate_link() -> String {
let rng = rand::rng();
let str: String = rng
.sample_iter(rand::distr::Alphanumeric)
.take(8)
.map(char::from)
.collect();
str.to_uppercase()
}

pub fn generate_public_id() -> String {
let rng = rand::rng();
let str: String = rng
Expand All @@ -26,10 +36,10 @@ pub fn generate_public_id() -> String {

#[cfg(test)]
mod test {
use crate::entity_ext::generate_public_id;
use crate::entity_ext::{generate_link, generate_public_id};

#[test]
fn test_link_generate() {
fn test_pub_id_generate() {
let link = generate_public_id();
println!("public id: {:?}", link);
assert!(
Expand All @@ -39,4 +49,14 @@ mod test {
.all(|c| c.is_alphanumeric() || c.is_lowercase())
)
}

#[test]
fn test_link_generate() {
let link = generate_link();
println!("MR Link: '{:?}'", link);
assert!(
link.chars().count() == 8
&& link.chars().all(|c| !c.is_alphabetic() || c.is_uppercase())
)
}
}
30 changes: 26 additions & 4 deletions jupiter/src/service/issue_service.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,32 @@ use crate::{
base_storage::{BaseStorage, StorageConnector},
conversation_storage::ConversationStorage,
issue_storage::IssueStorage,
mr_storage::MrStorage,
},
};

use callisto::{mega_issue, mega_mr};
use common::errors::MegaError;

#[derive(Clone)]
pub struct IssueService {
pub issue_storage: IssueStorage,
pub mr_storage: MrStorage,
pub conversation_storage: ConversationStorage,
}


impl IssueService {
pub fn new(issue_storage: IssueStorage, conversation_storage: ConversationStorage) -> Self {
pub fn new(base_storage: BaseStorage) -> Self {
Self {
issue_storage,
conversation_storage,
issue_storage: IssueStorage {
base: base_storage.clone(),
},
conversation_storage: ConversationStorage {
base: base_storage.clone(),
},
mr_storage: MrStorage {
base: base_storage.clone(),
},
}
}

Expand All @@ -29,6 +38,7 @@ impl IssueService {
Self {
issue_storage: IssueStorage { base: mock.clone() },
conversation_storage: ConversationStorage { base: mock.clone() },
mr_storage: MrStorage { base: mock.clone() },
}
}

Expand Down Expand Up @@ -63,4 +73,16 @@ impl IssueService {
};
Ok(res)
}

pub async fn get_suggestions(
&self,
query: &str,
) -> Result<(Vec<mega_issue::Model>, Vec<mega_mr::Model>), MegaError> {
let issues = self
.issue_storage
.get_issue_suggestions_by_query(query)
.await?;
let mrs = self.mr_storage.get_mr_suggestions_by_query(query).await?;
Ok((issues, mrs))
}
}
10 changes: 7 additions & 3 deletions jupiter/src/service/mr_service.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,14 @@ pub struct MRService {
}

impl MRService {
pub fn new(mr_storage: MrStorage, conversation_storage: ConversationStorage) -> Self {
pub fn new(base_storage: BaseStorage) -> Self {
Self {
mr_storage,
conversation_storage,
conversation_storage: ConversationStorage {
base: base_storage.clone(),
},
mr_storage: MrStorage {
base: base_storage.clone(),
},
}
}

Expand Down
38 changes: 19 additions & 19 deletions jupiter/src/storage/issue_storage.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ use sea_orm::{
use callisto::{item_assignees, item_labels, label, mega_conversation, mega_issue};
use common::errors::MegaError;
use common::model::Pagination;
use common::utils::{generate_id, generate_link};

use crate::model::common::{ItemDetails, LabelAssigneeParams, ListParams};
use crate::storage::base_storage::{BaseStorage, StorageConnector};
Expand Down Expand Up @@ -100,6 +99,23 @@ impl IssueStorage {
Ok((res, page))
}

pub async fn get_issue_suggestions_by_query(
&self,
query: &str,
) -> Result<Vec<mega_issue::Model>, MegaError> {
let keyword = format!("%{query}%");
let res = mega_issue::Entity::find()
.filter(
Condition::any()
.add(mega_issue::Column::Link.like(&keyword))
.add(mega_issue::Column::Title.like(&keyword)),
)
.limit(5)
.all(self.get_connection())
.await?;
Ok(res)
}

pub async fn get_issue(&self, link: &str) -> Result<Option<mega_issue::Model>, MegaError> {
let model = mega_issue::Entity::find()
.filter(mega_issue::Column::Link.eq(link))
Expand Down Expand Up @@ -147,16 +163,7 @@ impl IssueStorage {
username: &str,
title: &str,
) -> Result<mega_issue::Model, MegaError> {
let model = mega_issue::Model {
id: generate_id(),
link: generate_link(),
title: title.to_owned(),
author: username.to_owned(),
status: "open".to_owned(),
created_at: chrono::Utc::now().naive_utc(),
updated_at: chrono::Utc::now().naive_utc(),
closed_at: None,
};
let model = mega_issue::Model::new(title.to_owned(), username.to_owned());
let res = model
.into_active_model()
.insert(self.get_connection())
Expand Down Expand Up @@ -201,14 +208,7 @@ impl IssueStorage {
color: &str,
description: &str,
) -> Result<label::Model, MegaError> {
let model = label::Model {
id: generate_id(),
name: name.to_owned(),
color: color.to_owned(),
description: description.to_owned(),
created_at: chrono::Utc::now().naive_utc(),
updated_at: chrono::Utc::now().naive_utc(),
};
let model = label::Model::new(name, color, description);
let res = model
.into_active_model()
.insert(self.get_connection())
Expand Down
10 changes: 5 additions & 5 deletions jupiter/src/storage/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -96,16 +96,16 @@ impl Storage {
relay_storage,
user_storage,
vault_storage,
mr_storage: mr_storage.clone(),
issue_storage: issue_storage.clone(),
conversation_storage: conversation_storage.clone(),
mr_storage,
issue_storage,
conversation_storage,
lfs_file_storage,
};
Storage {
app_service: app_service.into(),
config: Arc::downgrade(&config),
issue_service: IssueService::new(issue_storage, conversation_storage.clone()),
mr_service: MRService::new(mr_storage, conversation_storage),
issue_service: IssueService::new(base.clone()),
mr_service: MRService::new(base.clone()),
}
}

Expand Down
Loading
Loading