NestJS - prisma default CRUD지난번에, prisma 를 통해 각 모델 스키마를 분리하고 테이블 생성까지 처리 하였었다.이제 가장 기본이 되는 기본 CRUD를 먼저 구현해 보도록 하자. User Model을 통한 기본 CRUD 작성명령어를 통한 module, service, controller 생성먼저 NestJS에서 제공해주는 CLI 명령어를 통해 response에 관련된 객체들을 생성한다.가장 기본이 되는 User Modle을 토대로 기본 CRUD를 작성한다.nest g res modules/user 명령어 입력 후, 선택지가 나오게 되면 아래와 같이 입력한다. ? What transport layer do you use? REST API? Would you like to gene..
전체 글
개발, 맛집, 여행에 대한 정리!old - prisma schema 분리서론글을 작성 하던 도중, prisma 에서 드디어 스키마 분리를 지원해 준다는 이슈가 작성 되었다. Support for splitting Prisma schema into multiple files · Issue #2377 · prisma/prismaProblem Prisma currently only supports one single Prisma Schema file. Developers want more flexibility for managing their Prisma Schema files. Motivations: breaking up large schema files to make th...github.com Hey, we just released s..
서론 이번에 새로운 기능 개발건에 대하여 nest와 prisma를 이용하여 개발 하기로 했다.두가지를 조합해서 사용하는건 처음인데, 제대로 사용하기 위해서는 사전 세팅 되어야 할 것들이 많았다.일단 prisma 에서 현재 미 지원 중 이지만, 반드시 필요해야 하는 기능들은 다음과 같았다. Custom 기능 개발 항목model 정의를 위한 파일 분리 (model separate file)mock db를 이용한 testsoft deleteprisma model to ERD희소식으로는 현재 model별 정의의 경우에는 약 5주전에 작업에 들어갔다라고 한다. (2024.06.12 기준, 현재 개발이 완료 되었다.)해당 이슈 코멘트 (issue 2377) Support for splitting Prisma sch..
개요 Socialite나 외부 Oauth를 통해 해당 회원 정보를 가져오는데 성공 하였지만, 내부적인 API을 사용하기 위해서는 내부적으로 구축한 인증 절차도 통과 해 줘야 한다. 하지만, 내부적으로 구축한 인증 절차를 통과하기 위해서는 내부 인증에 사용되는 email / password 값을 입력하는게 보통이지만 외부 oauth를 통과하기 위해 이미 외부 계정과 비밀번호를 입력한 유저에게 한번 더 email / password 값을 입력해야지만 로그인을 시켜주는 것은 절차상 너무 복잡한 절차이며 회원들이 이탈할 확률이 높아진다. 계정 통합을 위하여 가입시에 email / password 값을 추가적으로 받는 경우들은 많지만 매 로그인 시마다 해당 절차를 밟게 하는 것은 옳은 판단은 아닐 것이다. 다양한..
개요 docker-compose.yml 파일에서 postgresql 도 같이 묶어서 개발 환경을 손쉽게 구축하기 쉽게 구현하였지만, 실제 프로덕션 환경에서는 외부에 존재하는 postgresql에 접근해야 한다. 이에 따라, 로컬에서도 외부 postgresql에 접근하여 테스트가 가능하게 하고, prod env를 따로 설정하여 배포를 손쉽게 처리하기 위하여 Enviroment 관리를 진행한다. Environment 종류 기본 설정된 Env 파일들은 다음과 같습니다. 해당 파일들은 ignore 대상이며, git repository 에서 변수로 관리 됩니다. .env .env.dev .env.local .env.prod 사용 Environment 변경 기본적으로 아무런 옵션을 주지 않으면 .env 파일을 En..
개요 이전에 Laravel, hasura, postgresql을 연동하여 세팅 하였다. 코드로 graphql schema를 관리하기 위해서 lighthouse와 playground를 추가적으로 설정해 보자. 구현 먼저 lighthouse를 설치한다. lighthoust는 laravel 에서 QueryQL을 사용하기 위한 프레임워크이다. $ composer require nuwave/lighthouse 이후, schema를 추출하기 위하여 아래와 같은 명령어를 실행한다. $ php artisan vendor:publish --tag=lighthouse-schema 위 명령어를 실행한다면 graphql/schema.graphql 파일이 app dir 하위에 들어오게 된다. 다음 컴포져를 이용하여 playgr..
개요 이번에 새로운 프로젝트를 시작하면서 hasura를 사용해 보자는 제안이 있었다. 기존에 hasura를 사용 해 본 적은 있긴 하였으나 cloud 형태로 사용해 보았기 때문에 로컬 서버의 구축과 배포등을 어떻게 해야 할 지 고민이 되었다. 일단 데이터베이스 마이그레이션과 시딩을 해 줘야 하는데 hasura에서 제공해 주긴 하지만, factory 관리와 모델 관리등 조금 더 프로그래밍 적으로 관리하고 싶은 마음이 생겼다. 그렇기 때문에 기존에 자주 사용하던 laravel과 연동하여서 시스템을 구축해 보았다. 현재 생각하는 바로는 laravel로 관리할 대상 포인트 들은 다음과 같다. - 데이터 모델 - 데이터베이스 마이그레이션 - 데이터베이스 시딩 - 인증 - 파일 업로드 관리 구축 준비 먼저, php..
MutationObserver 레거시한 코드들을 유지보수 해야 하는 도중, dom 상태를 관측하여 특정 함수들을 실행시키고 싶은 경우가 생겼다. observer 패턴을 이용하여 react 에서의 getState 처럼, 특정 값이 변경 되었을 때 코드를 실행하고 싶었는데, js에서 MutationObserver 라는걸 지원해 주는 것을 확인 했다. https://developer.mozilla.org/ko/docs/Web/API/MutationObserver MutationObserver - Web API | MDN MutationObserver 인터페이스는 DOM 트리의 변경을 감지하는 기능을 제공합니다. DOM3 이벤트 명세의 일부였던 Mutation Events (en-US)를 대체합니다. devel..
모듈 참조 nest 에서는 내부 공급자 목록을 탐색하고, 동적으로 인스턴스화 하는 방법을 제공해 줍니다.ModuleRef를 이용하여 클래스에 주입할 수 있습니다. 먼저 다음과 같은 파일 구조를 가지고 있다고 가정하겠습니다. 각 모듈의 코드를 살펴 보겠습니다. import { Module } from '@nestjs/common';import { AuthController } from './auth.controller';import { AuthService } from './auth.service';import { TestService } from './test/test.service';@Module({ imports: [], controllers: [AuthController], providers:..
심플한 정적 모듈 바인딩 구현순환 종속성을 설명하기 전, 먼저 심플한 정적 모듈 바인딩을 구현해 보도록 하겠습니다.다음과 같이, auth service, user service를 만들었다고 가정하겠습니다.그 다음, 정적 모듈 바인딩을 위하여 user module에서 user service를 export 시켜주고 auth service 에서는 user module을 import 한 뒤 각 서비스에서 간단한 함수를 만들어서 정적 모듈 바인딩을 구현합니다. UsersModuleimport { Module } from '@nestjs/common';import { UsersController } from './users.controller';import { UsersService } from './users.s..
Third party api를 이용하면서, 자체 API 서버를 구축하고 싶다. 개발을 진행하다보면 언젠가 오는 순간인데, Third party api를 사용하면서 자체적인 api 서버도 구축해야 할 때가 많다. Third party api를 이용하기 위해선 Oauth 방식으로 인증을 구현하면 되는데, 자체 API 서버도 Oauth로 구축하게 된다면 SPA 형태로 개발된 클라이언트 사이드 측에서는 API서버의 resource와 third party 의 resource를 이용하기 위해선 두번의 인증을 거쳐야 하는 불편함이 있다. 또한 요즘 많이 다양한 어플리케이션에서 지원되는 기능 중 계정 통합이라는 기능이 있는데, 과거에는 kakao로 로그인, naver로 로그인 등 third party api로 회원가입..
서론 이번에 개발을 진행하면서, 인트라넷에 있는 Laravel Project를 AWS EC2에 배포해야 되는 상황이 왔다. AWS ECR을 사용하여, 도커 이미지를 빌드하고 EC2에서는 AWS ECR의 이미지를 당겨오는 방식으로 배포를 진행하였다. EC2 내부에 nginx가 설치되어 있는 상태이며 비용 문제상 EC2 내부에 mysql 도 같이 설치 되어 있는 상태였다. 일단 가장 중요한건 Dockefile 구성화 gitrunner 혹은 gitaction 에서의 처리 방법. .env 파일은 git repo에 등재가 되면 안되기 때문에 variables로 등록 된 후 배포시 파일을 생성하여 포함해 주도록 처리하였다. 전제로는, AWS ECR IAM 계정 및 정책이 있어야 한다. 또한, AWS CLI이 설치가..