Skip to content

Commit

Permalink
minor bugfixes
Browse files Browse the repository at this point in the history
  • Loading branch information
0xMimir committed Oct 21, 2023
1 parent fcdd350 commit 4490bae
Show file tree
Hide file tree
Showing 6 changed files with 67 additions and 15 deletions.
46 changes: 36 additions & 10 deletions backend/api/src/api/projects/infrastructure/repository.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
use error::Result;
use sea_orm::{
sea_query::{extension::postgres::PgExpr, Expr},
ColumnTrait, DatabaseConnection, EntityTrait, IntoSimpleExpr, JoinType, PaginatorTrait,
QueryOrder, QuerySelect, RelationTrait,
sea_query::{extension::postgres::PgExpr, Alias, Expr, PostgresQueryBuilder, SeaRc},
ColumnTrait, DatabaseConnection, DbBackend, EntityTrait, IntoSimpleExpr, JoinType,
PaginatorTrait, QueryOrder, QuerySelect, QueryTrait, Statement,
};
use std::sync::Arc;
use store::{github_projects, github_repositories, issues, objects::SearchGithubProject};
Expand All @@ -26,10 +26,13 @@ impl DbRepositoryContract for PgRepository {
&self,
params: SearchGithubProjectParams,
) -> Result<Pagination<SearchGithubProject>> {
let sub_select = github_repositories::Entity::find()
.left_join(issues::Entity)
.column_as(issues::Column::Id.count(), "issues")
.group_by(github_repositories::Column::Id)
.into_query();

let mut query = github_projects::Entity::find()
.select_only()
.columns([github_projects::Column::Id, github_projects::Column::Name])
.inner_join(github_repositories::Entity)
.column_as(
Expr::cust_with_expr(
r#"count(distinct $1)"#,
Expand All @@ -44,11 +47,14 @@ impl DbRepositoryContract for PgRepository {
),
"languages_used",
)
.join_rev(
JoinType::LeftJoin,
issues::Relation::GithubRepositories.def(),
.column_as(
Expr::cust(r#"sum("github_repositories"."issues")::bigint"#),
"issues",
)
.column_as(
Expr::cust(r#"sum("github_repositories"."stargazers_count")::bigint"#),
"stargazers_count",
)
.column_as(issues::Column::Id.count(), "issues")
.group_by(github_projects::Column::Id);

if let Some(languages) = params.languages_used {
Expand All @@ -70,6 +76,26 @@ impl DbRepositoryContract for PgRepository {

let query = query
.order_by(Expr::cust(order_by), order.into())
.into_query()
.join_subquery(
JoinType::InnerJoin,
sub_select,
SeaRc::new(Alias::new("github_repositories")),
github_repositories::Column::Project
.into_expr()
.eq(github_projects::Column::Id.into_expr()),
)
.to_owned();

let (sql, values) = query.build(PostgresQueryBuilder::default());

let query = github_projects::Entity::find().from_raw_sql(Statement::from_sql_and_values(
DbBackend::Postgres,
sql,
values,
));

let query = query
.into_model::<SearchGithubProject>()
.paginate(self.conn.as_ref(), per_page);

Expand Down
1 change: 0 additions & 1 deletion backend/api/src/jobs/info/domain.rs
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,6 @@ impl<
///
async fn update_info(&self) -> Result<()> {
let mut cryptocurrencies = self.repository.get_assets_without_info().await?;

let mut github_ids = self.repository.get_projects().await?;

while let Some((id, coingecko_id)) = cryptocurrencies.last() {
Expand Down
1 change: 1 addition & 0 deletions backend/libs/store/src/objects/search_github_project.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,5 @@ pub struct SearchGithubProject {
pub repositories: i64,
pub languages_used: Vec<String>,
pub issues: i64,
pub stargazers_count: i64
}
12 changes: 12 additions & 0 deletions frontend/src/assets/main.css
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,16 @@
.p-paginator-first {
font-size: larger;
color: var(--vt-c-text-dark-2);
}

body {
/* Internet Explorer 10+ */
-ms-overflow-style: none;
/* Firefox */
scrollbar-width: none;
}

body::-webkit-scrollbar {
/* Safari and Chrome */
display: none;
}
1 change: 1 addition & 0 deletions frontend/src/types/searchGithubProject.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ export interface SearchGithubProject {
repositories: number;
languagesUsed: string[];
issues: number;
stargazersCount: number;
}

export interface SearchGithubProjectParams {
Expand Down
21 changes: 17 additions & 4 deletions frontend/src/views/ProjectsView.vue
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ function search() {
languagesUsed: undefined
} as SearchGithubProjectParams;
if (languages.value) {
if (languages.value && languages.value.length) {
params.languagesUsed = languages.value.map(language => language.name);
}
Expand All @@ -45,6 +45,10 @@ onMounted(() => {
search()
});
function changeLanguages() {
page.value = 0;
}
watch([page, perPage, languages], search);
Expand All @@ -55,8 +59,8 @@ watch([page, perPage, languages], search);
Projects
</h1>
<div>
<MultiSelect v-model="languages" :options="allLanguages" optionLabel="name" placeholder="Select Languages"
filter :showToggleAll="false" display="chip" />
<MultiSelect v-model="languages" v-on:update:model-value="changeLanguages" :options="allLanguages"
optionLabel="name" placeholder="Select Languages" filter :showToggleAll="false" display="chip" />
</div>
<br />
<div v-if="projects.length">
Expand All @@ -68,9 +72,18 @@ watch([page, perPage, languages], search);
}}</a>
</template>
</Column>
<Column field="languagesUsed" header="Languages Used"></Column>
<Column field="languagesUsed" header="Languages Used">
<template #body="slotProps">
{{
slotProps.data.languagesUsed.length
? slotProps.data.languagesUsed?.reduce((a: string, b: string) => `${a}, ${b}`)
: "Unknown"
}}
</template>
</Column>
<Column field="repositories" header="Repositories"></Column>
<Column field="issues" header="Total Issues"></Column>
<Column field="stargazersCount" header="Stargazers Count"></Column>
</DataTable>
<Paginator :rows="perPage" :totalRecords="totalRecords" :page="page" @page="changePage"></Paginator>
</div>
Expand Down

0 comments on commit 4490bae

Please sign in to comment.