Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat/support azure cloud #150

Open
wants to merge 26 commits into
base: develop
Choose a base branch
from
Open

Feat/support azure cloud #150

wants to merge 26 commits into from

Conversation

ian-lemon
Copy link

  • cosmos db 연결
  • save, read, update, delete 구현

@ian-lemon ian-lemon requested a review from steve-lemon August 8, 2023 08:48
* `cosmos-service.ts`
* - common service for cosmos
*
* @author
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 항목 제대로 넣어줘유

* @author
* @date
*
* @copyright (C) 2019 LemonCloud Co Ltd. - All Rights Reserved.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

여기도 최초 작업 날짜로 넣어줘유

@@ -23,206 +23,230 @@ interface AccountModel extends StorageModel {
describe('StorageService', () => {
const PROFILE = loadProfile(); // use `env/<ENV>.yml`

//! dummy storage service.
it('should pass dummy storage-service', async done => {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수정되지 않는 부분에서 수정이 된걸봐서는 editor의 indent 설정이 이상한듯. 맞춰줘유.

src/environ.ts Outdated
@@ -74,7 +75,7 @@ export const loadEnviron = (process: any, options?: Options) => {
//! join array with ', '.
$O[key] = val.join(', ');
} else if ($det[key] === undefined) {
//! override only if undefined.
//! ov998rride only if undefined.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

의도치않은 코드 변경인듯

@@ -97,6 +98,20 @@ const credentials = (profile: string): string => {
if (!profile) return '';
const credentials = new AWS.SharedIniFileCredentials({ profile });
AWS.config.credentials = credentials;

const accessKeyId = process.env.AWS_ACCESS_KEY_ID;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이거 environ먹게 한듯한데, 이렇게 하믄 안될듯.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

.env file을 사용하지 말고 다른 방법으로 자격증명을 로드하면 되는지, 아니면 environ.ts 밖에서 구현해야하는지 문의 드립니다.

@ian-lemon
Copy link
Author

ian-lemon commented Aug 10, 2023

최초 테스트 버전입니다.
Dynamo DB와 동일한 test code 통과 합니다.
문서 : https://docs.google.com/document/d/1ViKeXPNBi-w1qG3FREx6MVNEp5d-BIFhO_at7Q6_QYw/edit

리팩토링 필요성

  • readOrCreate 전까지는 updates와 increments에 하나씩 들어오지만,
    테스트 코드에 없는 updates에 두 개 이상의 코드가 들어올 때를 가정하여,
    readOrCreate처럼 updates_key_list와 updates_value_list를 사용할 필요성이 있음.

  • updates만 있을 때, increments만 있을 때, updates & increments 둘 다 있을 때
    이렇게 세가지 경우를 심플하게 통합할 필요가 있어보임

  • balance, slot을 나누어놨는데 하드코딩 조건문으로 찾는것이 아니라 다른 방법이 필요해 보임

문제점

  • 모든 테스트 완료 후 재 테스트 시 기존 데이터를 찾아서 type을 덮어쓰고 slot을 초기화하는 것이 아니라 새로운 데이터를 생성하게됨

@ian-lemon
Copy link
Author

ian-lemon commented Aug 11, 2023

리팩토링 후 문제점도 해결하였습니다.

@ian-lemon
Copy link
Author

space : 4 변경으로 인한 수정표시.
실제 수정된 부분 key, value 대신 key_list, value_list 사용

    let key_list: string[] = [];
    let value_list: (string | number)[] = [];

    if (item !== null && item !== undefined) {
        for (const value of Object.values(item)) {
            if (typeof value === 'string' || typeof value === 'number') {
                value_list.push(value);
            }
        }
        key_list = Object.keys(item)
    }

@ian-lemon
Copy link
Author

  • All test code passed.
  • queryResult: test code의 기대값에 맞게 item이 아닌 count값을 return.
  • QueryBuilder: query condition의 elements에 따라 조건문을 구현 => refactoring needed

@ian-lemon
Copy link
Author

Query builder에 기존 Condition을 넣어주었습니다.
test code로 오는 conditions의 type 명시를 통해 코드를 강화하는게 필요한 것 같습니다.

@ian-lemon
Copy link
Author

  • 기존의 any type을 위한 코드 삭제
  • CosmosQueryFilter 활용, type을 명시 => 코드 강화

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants