-
context ν¨ν€μ§λ database/sql ν¨ν€μ§ λ±μ νμ ν¨ν€μ§ μ¬μ©λ²
-
testing ν¨ν€μ§ μΈμ νμ€ ν¨ν€μ§λ₯Ό μ¬μ©ν ν μ€νΈ κΈ°λ²
-
μ κ³ νμ€μ΄ λ μΈλΆ μ€νμμ€
-
λꡬλ ν λ²μ―€μ μ½λ 리뷰μμ μ§μ λΉν μ μ΄ μλ μΉ μ ν리μΌμ΄μ μ ꡬνν λ λ°μν μ μλ μ€μ/μ€ν¨
μμ κ°μ λ΄μ©μ νμ΅νλ€.
| Title | Details |
|---|---|
| HTTP μλ² λ§λ€κΈ° | 리ν©ν°λ§ ν
μ€νΈ μ½λ - μ½μ§ μμ ν μ€νΈ - run ν¨μλ₯Ό μ²λ¦¬ λΆλ¦¬νκΈ° - ν μ€νΈκ° μ€νλμ§ μλ κ²½μ° ν¬νΈ λ²νΈλ₯Ό λ³κ²½ν μ μλλ‘ λ§λ€κΈ° - λμ μΌλ‘ ν¬νΈ λ²νΈ μ€μ νκΈ° |
| HTTP μλ²λ₯Ό μ½ν κ²°ν© κ΅¬μ‘°λ‘ λ³κ²½νκΈ° | νκ²½ λ³μλ‘λΆν° μ€μ λΆλ¬μ€κΈ° - Config ν¨ν€μ§ ꡬννκΈ° - νκ²½ λ³μλ₯Ό μ¬μ©ν΄μ μ€ννκΈ° μκ·Έλ μ²λ¦¬νκΈ° - signal.NotifyContextλ₯Ό μ¬μ©ν΄ μκ·Έλ κΈ°λ€λ¦¬κΈ° Server ꡬ쑰체 μ μνκΈ° λΌμ°ν μ μλ₯Ό λΆν ν NewMux μ μνκΈ° - httptest ν¨ν€μ§λ₯Ό μ¬μ©ν ν μ€νΈ run ν¨μλ₯Ό λ€μ 리ν©ν°λ§νκΈ° |
| μλν¬μΈνΈ μΆκ°νκΈ° | entity.Task νμ
μ μμ μꡬ μ μ₯ λ°©λ²μ μμ ꡬν - entity.Taskμ μꡬ μ μ₯ λ°©λ² μμ ꡬν ν¬νΌ ν¨μλ₯Ό ꡬννκΈ° - ν μ€νΈμ© ν¬νΌ ν¨μ ꡬννκΈ° νμ€ν¬λ₯Ό λ±λ‘νλ μλν¬μΈνΈ ꡬν - μμ² λ°λ κ²μ¦ ν μ΄λΈ μ£Όλ ν μ€νΈμ 골λ ν μ€νΈλ₯Ό μ‘°ν©ν ν μ€νΈ μ½λ νμ€ν¬ λͺ©λ‘μ λ°ννλ μλν¬μΈνΈ ꡬν HTTP νΈλ€λ¬λ₯Ό λΌμ°ν μΌλ‘ μ€μ νκΈ° - github.com/go-chi/chiλ₯Ό μ¬μ©ν μ μ°ν λΌμ°ν μ€μ |
| RDBMSλ₯Ό μ¬μ©ν λ°μ΄ν°λ² μ΄μ€ μ²λ¦¬ ꡬννκΈ° | ν
μ΄λΈ μ μμ λ§μ΄κ·Έλ μ΄μ
λ°©λ² κ²μ¦ - λ§μ΄κ·Έλ μ΄μ λꡬ - κΉνλΈ μ‘μ μμ MySQL 컨ν μ΄λ μ€ννκΈ° RDBMS μ²λ¦¬ ꡬν - database/sqlκ³Ό github.com/jmoiron/sqlx ν¨ν€μ§ μ¬μ© - νκ²½ λ³μμμ μ 보 μ½κΈ° - μΈν°νμ΄μ€μ Repository νμ μ μ - RDBMS κ΄λ ¨ μ κ·Όμ μν ν μ€νΈ ν νλ¦Ώ ν¨μ RDBMS κ΄λ ¨ μ κ·Όμ μν ν μ€νΈ μ½λ - μ€ν νκ²½μ λ°λΌ μ μ μ 보λ₯Ό λ³κ²½νλ ν μ€νΈ ν νλ¦Ώ ν¨μ - μ€μ RDBMSλ₯Ό μ¬μ©ν ν μ€νΈνκΈ° - λͺ©μ μ¬μ©ν ν μ€νΈνκΈ° |
| κΈ°λ₯λ³λ‘ HTTP νΈλ€λ¬ ꡬν λΆν νκΈ° | HTTP νΈλ€λ¬ κΈ°λ₯ λΆν go generate λͺ λ Ήμ μ¬μ©ν λͺ© μλ μμ± - github.com/matryer/moq ν¨ν€μ§ λͺ© μ½λ μλ μμ± - handler.AddTaskServiceλ₯Ό μ¬μ©ν handler.AddTask 리ν©ν°λ§ μ¬μ©μ λ±λ‘ κΈ°λ₯ μμ± - entity ν¨ν€μ§ ꡬν - handler ν¨ν€μ§ ꡬν - service ν¨ν€μ§ ꡬν - store ν¨ν€μ§ ꡬν - NewMux ν¨μμ λ‘κ·ΈμΈ μλν¬μΈνΈ μ μνκΈ° |
| λ λμ€μ JWTλ₯Ό μ¬μ©ν μΈμ¦ λ° κΆν | λ λμ€ μ€λΉ - λ λμ€λ₯Ό μ¬μ©νκΈ° μν μ ν리μΌμ΄μ μ½λ μ€λΉ - KVS νμ μ μν ν μ€νΈ μμ± JWTμ μλͺ μ€λΉ - openssl λͺ λ Ή μ€λΉ - λΉλ°ν€μ 곡κ°ν€ μμ± JWTλ₯Ό μ¬μ©ν μ‘μΈμ€ ν ν° μμ± - JWTer ꡬ쑰체 μ μΈ - go:embedλ₯Ό μ¬μ©ν νμΌ μ²¨λΆνκΈ° - JWTλ₯Ό λ°ννλ GenerationToken λ©μλ ꡬν - HTTP μμ²μμ JWT λ°κΈ° - JWT μ 보λ₯Ό context.Context νμ κ°μ λ£κΈ° μ¬μ©μ λ‘κ·ΈμΈ μλν¬μΈνΈ ꡬν - handler ν¨ν€μ§ ꡬν - service ν¨ν€μ§ ꡬν - store ν¨ν€μ§ ꡬν - NewMux ν¨μμ λ‘κ·ΈμΈ μλν¬μΈνΈ μ μνκΈ° λ―Έλ€μ¨μ΄ ν¨ν΄μ μ¬μ©ν μΈμ¦ κΈ°λ₯ - http.Requestμ context.Context νμ κ°μ μ¬μ©μ IDμ κ΄λ ¨λ μ 보 λ£κΈ° - μμ² μ μ‘ μ¬μ©μ admin κΆνμΈμ§ κ²μ¦νκΈ° μμ²μ ν¬ν¨λ μΈμ¦κ³Ό κ΄λ ¨λ μ 보λ₯Ό μ¬μ©ν μλν¬μΈνΈ λ³΄νΈ - ν μ΄λΈ μ μ λ§μ΄κ·Έλ μ΄μ μμ± - entity.Task ꡬ쑰체 μ μΈ - λ‘κ·ΈμΈ μ¬μ©μλ§ νμ€ν¬ μΆκ°νκΈ° - POST /tasksλ‘ μμ μ΄ λ±λ‘ν νμ€ν¬λ§ μΆκ° - GET /tasksλ‘ μμ μ΄ λ±λ‘ν νμ€ν¬λ§ 보μ΄λλ‘ λ³κ²½νκΈ° - admin κΆν μ¬μ©μλ§ μ κ·Όν μ μλ μλν¬μΈνΈ λ§λ€κΈ° |
go test ./...
or
go test -v ./...