Skip to content

Commit

Permalink
Merge pull request #143 from myyrakle/test/#142
Browse files Browse the repository at this point in the history
[#142] select query 테스트코드 작성 및 리팩토링
  • Loading branch information
myyrakle authored Jul 30, 2024
2 parents 32c36a4 + 739a428 commit 5cd2c6f
Show file tree
Hide file tree
Showing 13 changed files with 2,425 additions and 1,002 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ jobs:
- name: Set coverage env variable
run: |
echo "COVERAGE=$(cat coverage_total_percent.txt)" >> $GITHUB_ENV
echo "COVERAGE=$(head -n 1 coverage_total_percent.txt)" >> $GITHUB_ENV
- name: Clone html_reports repository
run: |
Expand Down
3 changes: 2 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ bytes = "1.2.1"
tokio-util = { version = "0.7.4", features = [ "codec" ] }
futures = "0.3.23"
chrono = "0.4.22"
bson = "2.4.0"
bson = "2.11.0"
time = "0.3.36"
colored = "2.0.0"
uuid = "1.1.2"
itertools = "0.10.5"
Expand Down
2 changes: 1 addition & 1 deletion src/ast/dml/parts/group_by.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ pub struct GroupByClause {
pub group_by_items: Vec<GroupByItem>,
}

#[derive(Deserialize, Serialize, Clone, Debug, PartialEq, Eq, Hash)]
#[derive(Deserialize, Serialize, Clone, Debug, PartialEq, Eq, Hash, Default)]
pub struct GroupByItem {
pub item: SelectColumn,
}
2 changes: 1 addition & 1 deletion src/ast/dml/parts/having.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use crate::ast::types::SQLExpression;

use serde::{Deserialize, Serialize};

#[derive(Deserialize, Serialize, Clone, Debug, PartialEq)]
#[derive(Deserialize, Serialize, Clone, Debug, PartialEq, Default)]
pub struct HavingClause {
pub expression: Box<SQLExpression>,
}
8 changes: 7 additions & 1 deletion src/ast/dml/parts/join.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use crate::ast::types::{SQLExpression, TableName};

use serde::{Deserialize, Serialize};

#[derive(Deserialize, Serialize, Clone, Debug, PartialEq)]
#[derive(Deserialize, Serialize, Clone, Debug, PartialEq, Default)]
pub struct JoinClause {
pub join_type: JoinType,
pub right: TableName,
Expand All @@ -19,3 +19,9 @@ pub enum JoinType {
RightOuterJoin,
FullOuterJoin,
}

impl Default for JoinType {
fn default() -> Self {
JoinType::InnerJoin
}
}
14 changes: 13 additions & 1 deletion src/ast/dml/parts/order_by.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ pub struct OrderByClause {
pub order_by_items: Vec<OrderByItem>,
}

#[derive(Deserialize, Serialize, Clone, Debug, PartialEq)]
#[derive(Deserialize, Serialize, Clone, Debug, PartialEq, Default)]
pub struct OrderByItem {
pub item: SQLExpression,
pub order_type: OrderByType,
Expand All @@ -20,8 +20,20 @@ pub enum OrderByType {
Desc,
}

impl Default for OrderByType {
fn default() -> Self {
OrderByType::Asc
}
}

#[derive(Deserialize, Serialize, Clone, Debug, PartialEq, Eq)]
pub enum OrderByNulls {
First,
Last,
}

impl Default for OrderByNulls {
fn default() -> Self {
OrderByNulls::Last
}
}
2 changes: 1 addition & 1 deletion src/ast/dml/parts/select_item.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ pub struct SelectWildCard {
pub alias: Option<String>,
}

#[derive(Deserialize, Serialize, Clone, Debug, PartialEq)]
#[derive(Deserialize, Serialize, Clone, Debug, PartialEq, Default)]
pub struct SelectItem {
pub item: Option<SQLExpression>, // select 요소
pub alias: Option<String>, // as 절이 있을 경우 alias 정보
Expand Down
2 changes: 1 addition & 1 deletion src/ast/dml/parts/where.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use crate::ast::types::SQLExpression;

use serde::{Deserialize, Serialize};

#[derive(Deserialize, Serialize, Clone, Debug, PartialEq)]
#[derive(Deserialize, Serialize, Clone, Debug, PartialEq, Default)]
pub struct WhereClause {
pub expression: SQLExpression,
}
2 changes: 1 addition & 1 deletion src/ast/dml/select.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ use super::{
},
};

#[derive(Deserialize, Serialize, Clone, Debug, PartialEq)]
#[derive(Deserialize, Serialize, Clone, Debug, PartialEq, Default)]
pub struct SelectQuery {
pub select_items: Vec<SelectKind>,
pub has_aggregate: bool,
Expand Down
6 changes: 6 additions & 0 deletions src/ast/types/expression.rs
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,12 @@ pub enum SQLExpression {
Null,
}

impl Default for SQLExpression {
fn default() -> Self {
Self::Null
}
}

impl SQLExpression {
pub fn is_unary(&self) -> bool {
#[allow(clippy::match_like_matches_macro)]
Expand Down
2 changes: 1 addition & 1 deletion src/ast/types/select_column.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use serde::{Deserialize, Serialize};

// [table_alias.]column_name
// SELECT시 컬럼 지정을 가리키는 값입니다.
#[derive(Deserialize, Serialize, Clone, Debug, PartialEq, Eq, Hash)]
#[derive(Deserialize, Serialize, Clone, Debug, PartialEq, Eq, Hash, Default)]
pub struct SelectColumn {
pub table_name: Option<String>,
pub column_name: String,
Expand Down
12 changes: 9 additions & 3 deletions src/parser/implements/dml/select.rs
Original file line number Diff line number Diff line change
Expand Up @@ -92,10 +92,11 @@ impl Parser {
}
}
_ => {
return Err(ParsingError::wrap(format!(
"E0304 expected 'FROM' clause. but your input word is '{:?}'",
// From이어야만 이전 루프를 탈출하기 때문에, From이 아닐 수 없음
unreachable!(
"expected 'FROM' clause. but your input word is '{:?}'",
current_token
)));
);
}
}

Expand Down Expand Up @@ -312,6 +313,11 @@ impl Parser {
// 현재 select_item은 종료된 것으로 판단.
Ok(select_item.build())
}
Token::SemiColon => {
self.unget_next_token(current_token);
// 현재 select_item은 종료된 것으로 판단.
Ok(select_item.build())
}
_ => Err(ParsingError::wrap(format!(
"E0308 expected expression. but your input word is '{:?}'",
current_token
Expand Down
Loading

0 comments on commit 5cd2c6f

Please sign in to comment.