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

[EPIC] sqlc 도입 #69

Merged
merged 12 commits into from
Apr 27, 2024
Merged

[EPIC] sqlc 도입 #69

merged 12 commits into from
Apr 27, 2024

Conversation

litsynp
Copy link
Contributor

@litsynp litsynp commented Apr 25, 2024

Epic 진행상황

sqlc

sqlc는 타입 세이프하게 SQL 코드를 Go 코드로 변환시켜주는 툴입니다.

기존의 database/sql이나 pgx 등의 DB 클라이언트를 지원해서 그대로 사용할 수 있습니다.

jetgoqu도 좋은 평가를 받고 있어서 jet으로 시도했었는데요.

서베이한 결과, sqlc가 제일 깔끔하고 우리 니즈와 개발 플로우에 맞는 것 같습니다. (SQL 손수 작성 -> 코드 매핑 => 자동화)

SQL 쿼리는 그대로 쓰면서 쿼리 빌딩 자체를 안해도 되는 게 좋았습니다.

sqlc 사용법

sqlc를 설치합니다.

$ make sqlc:install

go-migrate를 통해 db/migrations 밑에 있는 sql 마이그레이션 파일과 queries/*sql 파일들을 순차적으로 읽어 databasegen 패키지 (internal/database/gen 경로)에 readonly db.go, model.go, queries.go를 생성합니다. (참고)

마이그레이션이 생길 때마다 돌려주면 새로운 모델, 쿼리를 사용할 수 있습니다.

컨디셔널 쿼리 작성할 때 조금의 주의사항이 필요한데 공식문서 보시거나 queries/users.sql을 참고하시면 됩니다.

$ make sqlc:generate

참고사항

사실 유용한 기능이 더 있는데 조금씩 도입해보겠습니다.

@litsynp litsynp self-assigned this Apr 25, 2024
@litsynp
Copy link
Contributor Author

litsynp commented Apr 25, 2024

sqlc 적용

Copy link
Member

@barabobBOB barabobBOB left a comment

Choose a reason for hiding this comment

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

달아주신 코멘트도 모두 확인했습니다 :)

@litsynp litsynp marked this pull request as ready for review April 27, 2024 06:46
@litsynp
Copy link
Contributor Author

litsynp commented Apr 27, 2024

🙇

@litsynp litsynp merged commit 3a1d348 into main Apr 27, 2024
1 check passed
@litsynp litsynp deleted the epic/sqlc branch April 27, 2024 06:46
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