diff --git a/api/common.go b/api/common.go index 3fccfdad..4efbe3bc 100644 --- a/api/common.go +++ b/api/common.go @@ -32,7 +32,12 @@ func (l *PaginatedView[T]) CalcLastPage() { } } -func writePayload(w http.ResponseWriter, headers map[string]string, payload interface{}, statusCode int) error { +func writePayload( + w http.ResponseWriter, + headers map[string]string, + payload interface{}, + statusCode int, +) error { setHeaders(w, headers) w.WriteHeader(statusCode) diff --git a/api/web.go b/api/web.go index 8d23a66f..3c21bb68 100644 --- a/api/web.go +++ b/api/web.go @@ -40,7 +40,9 @@ func ParseOptionalUUIDQuery(c echo.Context, query string) (uuid.NullUUID, *AppEr id, err := uuid.Parse(queryStr) if err != nil { - return uuid.NullUUID{}, ErrInvalidQuery(fmt.Errorf("expected valid UUID for query: %s", query)) + return uuid.NullUUID{}, ErrInvalidQuery( + fmt.Errorf("expected valid UUID for query: %s", query), + ) } return uuid.NullUUID{UUID: id, Valid: true}, nil @@ -79,7 +81,10 @@ func ParseOptionalStringQuery(c echo.Context, query string) *string { } // ParsePaginationQueries parses pagination parameters from query string: page, size. -func ParsePaginationQueries(c echo.Context, defaultPage, defaultLimit int) (page, size int, err *AppError) { +func ParsePaginationQueries( + c echo.Context, + defaultPage, defaultLimit int, +) (page, size int, err *AppError) { pageQuery := c.QueryParam("page") sizeQuery := c.QueryParam("size") @@ -90,7 +95,9 @@ func ParsePaginationQueries(c echo.Context, defaultPage, defaultLimit int) (page var atoiError error page, atoiError = strconv.Atoi(pageQuery) if atoiError != nil || page <= 0 { - return 0, 0, ErrInvalidPagination(errors.New("expected integer value bigger than 0 for query: page")) + return 0, 0, ErrInvalidPagination( + errors.New("expected integer value bigger than 0 for query: page"), + ) } } @@ -98,7 +105,9 @@ func ParsePaginationQueries(c echo.Context, defaultPage, defaultLimit int) (page var atoiError error size, atoiError = strconv.Atoi(sizeQuery) if atoiError != nil || size <= 0 { - return 0, 0, ErrInvalidPagination(errors.New("expected integer value bigger than 0 for query: size")) + return 0, 0, ErrInvalidPagination( + errors.New("expected integer value bigger than 0 for query: size"), + ) } } diff --git a/cmd/import_breeds/main.go b/cmd/import_breeds/main.go index a4231028..04ce15be 100644 --- a/cmd/import_breeds/main.go +++ b/cmd/import_breeds/main.go @@ -140,11 +140,20 @@ func importBreed( }, nil } -func importBreeds(ctx context.Context, conn *database.DB, petType commonvo.PetType, rows *[]breedsimporterservice.Row) { +func importBreeds( + ctx context.Context, + conn *database.DB, + petType commonvo.PetType, + rows *[]breedsimporterservice.Row, +) { for _, row := range *rows { breedData, err := importBreed(ctx, conn, petType, row) if err != nil { - log.Printf("Failed to import breed with pet_type: %s, name: %s to database", breedData.PetType, breedData.Name) + log.Printf( + "Failed to import breed with pet_type: %s, name: %s to database", + breedData.PetType, + breedData.Name, + ) } } } diff --git a/cmd/migrateuuids/uuidmigrator.go b/cmd/migrateuuids/uuidmigrator.go index e94d87f2..b3cf34e2 100644 --- a/cmd/migrateuuids/uuidmigrator.go +++ b/cmd/migrateuuids/uuidmigrator.go @@ -35,55 +35,135 @@ type FK struct { var Targets = []Target{ {"users", "uuid", []FK{ - {Column: "profile_image_id", UUIDColumn: "profile_image_uuid", ReferencedTable: "media", ReferencedColumn: "uuid"}, + { + Column: "profile_image_id", + UUIDColumn: "profile_image_uuid", + ReferencedTable: "media", + ReferencedColumn: "uuid", + }, }}, {"media", "uuid", []FK{}}, {"breeds", "uuid", []FK{}}, {"pets", "uuid", []FK{ - {Column: "owner_id", UUIDColumn: "owner_uuid", ReferencedTable: "users", ReferencedColumn: "uuid"}, - {Column: "profile_image_id", UUIDColumn: "profile_image_uuid", ReferencedTable: "media", ReferencedColumn: "uuid"}, + { + Column: "owner_id", + UUIDColumn: "owner_uuid", + ReferencedTable: "users", + ReferencedColumn: "uuid", + }, + { + Column: "profile_image_id", + UUIDColumn: "profile_image_uuid", + ReferencedTable: "media", + ReferencedColumn: "uuid", + }, }}, {"base_posts", "uuid", []FK{ - {Column: "author_id", UUIDColumn: "author_uuid", ReferencedTable: "users", ReferencedColumn: "uuid"}, + { + Column: "author_id", + UUIDColumn: "author_uuid", + ReferencedTable: "users", + ReferencedColumn: "uuid", + }, }}, {"sos_posts", "uuid", []FK{ - {Column: "thumbnail_id", UUIDColumn: "thumbnail_uuid", ReferencedTable: "media", ReferencedColumn: "uuid"}, + { + Column: "thumbnail_id", + UUIDColumn: "thumbnail_uuid", + ReferencedTable: "media", + ReferencedColumn: "uuid", + }, }}, {"sos_dates", "uuid", []FK{}}, {"sos_posts_dates", "uuid", []FK{ - {Column: "sos_post_id", UUIDColumn: "sos_post_uuid", ReferencedTable: "sos_posts", ReferencedColumn: "uuid"}, - {Column: "sos_dates_id", UUIDColumn: "sos_dates_uuid", ReferencedTable: "sos_dates", ReferencedColumn: "uuid"}, + { + Column: "sos_post_id", + UUIDColumn: "sos_post_uuid", + ReferencedTable: "sos_posts", + ReferencedColumn: "uuid", + }, + { + Column: "sos_dates_id", + UUIDColumn: "sos_dates_uuid", + ReferencedTable: "sos_dates", + ReferencedColumn: "uuid", + }, }}, {"sos_conditions", "uuid", []FK{}}, {"sos_posts_conditions", "uuid", []FK{ - {Column: "sos_post_id", UUIDColumn: "sos_post_uuid", ReferencedTable: "sos_posts", ReferencedColumn: "uuid"}, + { + Column: "sos_post_id", + UUIDColumn: "sos_post_uuid", + ReferencedTable: "sos_posts", + ReferencedColumn: "uuid", + }, { Column: "sos_condition_id", UUIDColumn: "sos_condition_uuid", ReferencedTable: "sos_conditions", ReferencedColumn: "uuid", }, }}, {"sos_posts_pets", "uuid", []FK{ - {Column: "sos_post_id", UUIDColumn: "sos_post_uuid", ReferencedTable: "sos_posts", ReferencedColumn: "uuid"}, - {Column: "pet_id", UUIDColumn: "pet_uuid", ReferencedTable: "pets", ReferencedColumn: "uuid"}, + { + Column: "sos_post_id", + UUIDColumn: "sos_post_uuid", + ReferencedTable: "sos_posts", + ReferencedColumn: "uuid", + }, + { + Column: "pet_id", + UUIDColumn: "pet_uuid", + ReferencedTable: "pets", + ReferencedColumn: "uuid", + }, }}, { "resource_media", "uuid", []FK{ - {Column: "media_id", UUIDColumn: "media_uuid", ReferencedTable: "media", ReferencedColumn: "uuid"}, + { + Column: "media_id", + UUIDColumn: "media_uuid", + ReferencedTable: "media", + ReferencedColumn: "uuid", + }, // Conditional FK -- Thankfully, we only have SOS post for resource - {Column: "resource_id", UUIDColumn: "resource_uuid", ReferencedTable: "sos_posts", ReferencedColumn: "uuid"}, + { + Column: "resource_id", + UUIDColumn: "resource_uuid", + ReferencedTable: "sos_posts", + ReferencedColumn: "uuid", + }, }, }, {"chat_rooms", "uuid", []FK{}}, { "chat_messages", "uuid", []FK{ - {Column: "room_id", UUIDColumn: "room_uuid", ReferencedTable: "chat_rooms", ReferencedColumn: "uuid"}, - {Column: "user_id", UUIDColumn: "user_uuid", ReferencedTable: "users", ReferencedColumn: "uuid"}, + { + Column: "room_id", + UUIDColumn: "room_uuid", + ReferencedTable: "chat_rooms", + ReferencedColumn: "uuid", + }, + { + Column: "user_id", + UUIDColumn: "user_uuid", + ReferencedTable: "users", + ReferencedColumn: "uuid", + }, }, }, { "user_chat_rooms", "uuid", []FK{ - {Column: "room_id", UUIDColumn: "room_uuid", ReferencedTable: "chat_rooms", ReferencedColumn: "uuid"}, - {Column: "user_id", UUIDColumn: "user_uuid", ReferencedTable: "users", ReferencedColumn: "uuid"}, + { + Column: "room_id", + UUIDColumn: "room_uuid", + ReferencedTable: "chat_rooms", + ReferencedColumn: "uuid", + }, + { + Column: "user_id", + UUIDColumn: "user_uuid", + ReferencedTable: "users", + ReferencedColumn: "uuid", + }, }, }, } @@ -146,7 +226,9 @@ func MigrateUUID(tx *database.Tx, options MigrateOptions) *pnd.AppError { var count int err := tx.QueryRow("SELECT COUNT(*) FROM " + target.Table).Scan(&count) if err != nil { - return pnd.ErrUnknown(fmt.Errorf("error counting rows from table %s due to %w", target.Table, err)) + return pnd.ErrUnknown( + fmt.Errorf("error counting rows from table %s due to %w", target.Table, err), + ) } log.Printf(" - Total rows: %d\n", count) total += count @@ -169,7 +251,12 @@ func MigrateUUID(tx *database.Tx, options MigrateOptions) *pnd.AppError { err = rows.Scan(&row.ID, &row.UUID) if err != nil { return pnd.ErrUnknown( - fmt.Errorf("error scanning row from table %s with id %d due to %w", target.Table, row.ID, err), + fmt.Errorf( + "error scanning row from table %s with id %d due to %w", + target.Table, + row.ID, + err, + ), ) } rowData = append(rowData, row) @@ -194,10 +281,19 @@ func MigrateUUID(tx *database.Tx, options MigrateOptions) *pnd.AppError { } if !options.ReadOnly { - _, err = tx.Exec("UPDATE "+target.Table+" SET "+target.UUIDColumn+" = $1 WHERE id = $2", newUUID, row.ID) + _, err = tx.Exec( + "UPDATE "+target.Table+" SET "+target.UUIDColumn+" = $1 WHERE id = $2", + newUUID, + row.ID, + ) if err != nil { return pnd.ErrUnknown( - fmt.Errorf("error updating UUID column in table %s with id %d due to %w", target.Table, row.ID, err), + fmt.Errorf( + "error updating UUID column in table %s with id %d due to %w", + target.Table, + row.ID, + err, + ), ) } log.Printf(" - Updated row %d with UUID %s\n", row.ID, newUUID) @@ -241,7 +337,12 @@ func MigrateFK(tx *database.Tx, options MigrateOptions) *pnd.AppError { err = rows.Scan(&row.ID, &fkValue) if err != nil { return pnd.ErrUnknown( - fmt.Errorf("error scanning row from table %s with id %d due to %w", target.Table, row.ID, err), + fmt.Errorf( + "error scanning row from table %s with id %d due to %w", + target.Table, + row.ID, + err, + ), ) } @@ -255,7 +356,11 @@ func MigrateFK(tx *database.Tx, options MigrateOptions) *pnd.AppError { for _, row := range rowData { // Skip if FK is not set if row.FKValue == nil { - log.Printf(" - Skipping row %d with FK %s due to null value\n", row.ID, fk.Column) + log.Printf( + " - Skipping row %d with FK %s due to null value\n", + row.ID, + fk.Column, + ) skipped++ continue } @@ -266,23 +371,41 @@ func MigrateFK(tx *database.Tx, options MigrateOptions) *pnd.AppError { row.FKValue).Scan(&uuidValue) if err != nil && err.Error() != "sql: no rows in result set" { return pnd.ErrUnknown( - fmt.Errorf("error selecting UUID from table %s with id %d due to %w", fk.ReferencedTable, row.FKValue, err), + fmt.Errorf( + "error selecting UUID from table %s with id %d due to %w", + fk.ReferencedTable, + row.FKValue, + err, + ), ) } // Skip if UUID is not set if uuidValue == nil { // Perhaps you forgot to run MigrateUUID() before MigrateFK() - log.Printf(" - Skipping row %d with FK %s due to missing UUID\n", row.ID, fk.Column) + log.Printf( + " - Skipping row %d with FK %s due to missing UUID\n", + row.ID, + fk.Column, + ) skipped++ continue } if !options.ReadOnly { - _, err = tx.Exec("UPDATE "+target.Table+" SET "+fk.UUIDColumn+" = $1 WHERE id = $2", *uuidValue, row.ID) + _, err = tx.Exec( + "UPDATE "+target.Table+" SET "+fk.UUIDColumn+" = $1 WHERE id = $2", + *uuidValue, + row.ID, + ) if err != nil { return pnd.ErrUnknown( - fmt.Errorf("error updating UUID column in table %s with id %d due to %w", target.Table, row.ID, err), + fmt.Errorf( + "error updating UUID column in table %s with id %d due to %w", + target.Table, + row.ID, + err, + ), ) } } @@ -290,7 +413,13 @@ func MigrateFK(tx *database.Tx, options MigrateOptions) *pnd.AppError { succeeded++ } - log.Printf(" - FK %s, Total rows: %d, Succeeded: %d, Skipped: %d\n", fk.Column, total, succeeded, skipped) + log.Printf( + " - FK %s, Total rows: %d, Succeeded: %d, Skipped: %d\n", + fk.Column, + total, + succeeded, + skipped, + ) } } diff --git a/cmd/server/handler/auth_handler.go b/cmd/server/handler/auth_handler.go index 0aa43f9d..f5651ecc 100644 --- a/cmd/server/handler/auth_handler.go +++ b/cmd/server/handler/auth_handler.go @@ -19,7 +19,10 @@ type AuthHandler struct { kakaoClient kakaoinfra.KakaoClient } -func NewAuthHandler(authService service.AuthService, kakaoClient kakaoinfra.KakaoClient) *AuthHandler { +func NewAuthHandler( + authService service.AuthService, + kakaoClient kakaoinfra.KakaoClient, +) *AuthHandler { return &AuthHandler{ authService: authService, kakaoClient: kakaoClient, @@ -63,7 +66,10 @@ func (h *AuthHandler) KakaoCallback(c echo.Context) error { return c.JSON(pndErr.StatusCode, pndErr) } - customToken, err2 := h.authService.CustomToken(c.Request().Context(), strconv.FormatInt(userProfile.ID, 10)) + customToken, err2 := h.authService.CustomToken( + c.Request().Context(), + strconv.FormatInt(userProfile.ID, 10), + ) if err2 != nil { return c.JSON(err2.StatusCode, err2) } @@ -87,16 +93,25 @@ func (h *AuthHandler) GenerateFBCustomTokenFromKakao(c echo.Context) error { return c.JSON(err.StatusCode, err) } - userProfile, err2 := h.kakaoClient.FetchUserProfile(c.Request().Context(), tokenRequest.OAuthToken) + userProfile, err2 := h.kakaoClient.FetchUserProfile( + c.Request().Context(), + tokenRequest.OAuthToken, + ) if err2 != nil { pndErr := pnd.ErrBadRequest(errors.New("유효하지 않은 Kakao 인증 정보입니다")) return c.JSON(pndErr.StatusCode, pndErr) } - customToken, err := h.authService.CustomToken(c.Request().Context(), strconv.FormatInt(userProfile.ID, 10)) + customToken, err := h.authService.CustomToken( + c.Request().Context(), + strconv.FormatInt(userProfile.ID, 10), + ) if err != nil { return c.JSON(err.StatusCode, err) } - return c.JSON(http.StatusCreated, auth.NewGenerateFBCustomTokenResponse(*customToken, userProfile)) + return c.JSON( + http.StatusCreated, + auth.NewGenerateFBCustomTokenResponse(*customToken, userProfile), + ) } diff --git a/cmd/server/handler/chat_handler.go b/cmd/server/handler/chat_handler.go index 6993145c..78a21919 100644 --- a/cmd/server/handler/chat_handler.go +++ b/cmd/server/handler/chat_handler.go @@ -35,7 +35,10 @@ func NewChatHandler( // @Success 200 {object} domain.RoomSimpleInfo // @Router /chat/rooms/{roomID} [get] func (h ChatHandler) FindRoomByID(c echo.Context) error { - foundUser, err := h.authService.VerifyAuthAndGetUser(c.Request().Context(), c.Request().Header.Get("Authorization")) + foundUser, err := h.authService.VerifyAuthAndGetUser( + c.Request().Context(), + c.Request().Header.Get("Authorization"), + ) if err != nil { return c.JSON(err.StatusCode, err) } @@ -45,7 +48,11 @@ func (h ChatHandler) FindRoomByID(c echo.Context) error { return c.JSON(err.StatusCode, err) } - res, err := h.chatService.FindChatRoomByUIDAndRoomID(c.Request().Context(), foundUser.FirebaseUID, roomID) + res, err := h.chatService.FindChatRoomByUIDAndRoomID( + c.Request().Context(), + foundUser.FirebaseUID, + roomID, + ) if err != nil { return c.JSON(err.StatusCode, err) } @@ -64,7 +71,10 @@ func (h ChatHandler) FindRoomByID(c echo.Context) error { // @Success 201 {object} domain.RoomSimpleInfo // @Router /chat/rooms [post] func (h ChatHandler) CreateRoom(c echo.Context) error { - user, err := h.authService.VerifyAuthAndGetUser(c.Request().Context(), c.Request().Header.Get("Authorization")) + user, err := h.authService.VerifyAuthAndGetUser( + c.Request().Context(), + c.Request().Header.Get("Authorization"), + ) if err != nil { return c.JSON(err.StatusCode, err) } @@ -98,7 +108,10 @@ func (h ChatHandler) CreateRoom(c echo.Context) error { // @Success 200 {object} domain.JoinRoomsView // @Router /chat/rooms/{roomID}/join [post] func (h ChatHandler) JoinChatRoom(c echo.Context) error { - foundUser, err := h.authService.VerifyAuthAndGetUser(c.Request().Context(), c.Request().Header.Get("Authorization")) + foundUser, err := h.authService.VerifyAuthAndGetUser( + c.Request().Context(), + c.Request().Header.Get("Authorization"), + ) if err != nil { return c.JSON(err.StatusCode, err) } @@ -127,7 +140,10 @@ func (h ChatHandler) JoinChatRoom(c echo.Context) error { // @Success 200 // @Router /chat/rooms/{roomID}/leave [post] func (h ChatHandler) LeaveChatRoom(c echo.Context) error { - foundUser, err := h.authService.VerifyAuthAndGetUser(c.Request().Context(), c.Request().Header.Get("Authorization")) + foundUser, err := h.authService.VerifyAuthAndGetUser( + c.Request().Context(), + c.Request().Header.Get("Authorization"), + ) if err != nil { return c.JSON(err.StatusCode, err) } @@ -151,7 +167,10 @@ func (h ChatHandler) LeaveChatRoom(c echo.Context) error { // @Success 200 {object} domain.JoinRoomsView // @Router /chat/rooms [get] func (h ChatHandler) FindAllRooms(c echo.Context) error { - foundUser, err := h.authService.VerifyAuthAndGetUser(c.Request().Context(), c.Request().Header.Get("Authorization")) + foundUser, err := h.authService.VerifyAuthAndGetUser( + c.Request().Context(), + c.Request().Header.Get("Authorization"), + ) if err != nil { return c.JSON(err.StatusCode, err) } diff --git a/cmd/server/handler/media_handler.go b/cmd/server/handler/media_handler.go index 6aac7f52..caaf6580 100644 --- a/cmd/server/handler/media_handler.go +++ b/cmd/server/handler/media_handler.go @@ -74,12 +74,19 @@ func (h *MediaHandler) UploadImage(c echo.Context) error { if !isValidMimeType(fileHeader.Header.Get("Content-Type")) { pndErr := pnd.ErrMultipartFormError( - errors.New("invalid MIME type; supported MIME types are: [" + supportedMimeTypeString() + "]"), + errors.New( + "invalid MIME type; supported MIME types are: [" + supportedMimeTypeString() + "]", + ), ) return c.JSON(pndErr.StatusCode, pndErr) } - res, err2 := h.mediaService.UploadMedia(c.Request().Context(), file, media.TypeImage, fileHeader.Filename) + res, err2 := h.mediaService.UploadMedia( + c.Request().Context(), + file, + media.TypeImage, + fileHeader.Filename, + ) if err2 != nil { return c.JSON(err2.StatusCode, err2) } diff --git a/cmd/server/handler/sos_post_handler.go b/cmd/server/handler/sos_post_handler.go index f3e64ee2..6515385f 100644 --- a/cmd/server/handler/sos_post_handler.go +++ b/cmd/server/handler/sos_post_handler.go @@ -15,7 +15,10 @@ type SOSPostHandler struct { authService service.AuthService } -func NewSOSPostHandler(sosPostService service.SOSPostService, authService service.AuthService) *SOSPostHandler { +func NewSOSPostHandler( + sosPostService service.SOSPostService, + authService service.AuthService, +) *SOSPostHandler { return &SOSPostHandler{ sosPostService: sosPostService, authService: authService, @@ -33,7 +36,10 @@ func NewSOSPostHandler(sosPostService service.SOSPostService, authService servic // @Success 201 {object} sospost.DetailView // @Router /posts/sos [post] func (h *SOSPostHandler) WriteSOSPost(c echo.Context) error { - foundUser, err := h.authService.VerifyAuthAndGetUser(c.Request().Context(), c.Request().Header.Get("Authorization")) + foundUser, err := h.authService.VerifyAuthAndGetUser( + c.Request().Context(), + c.Request().Header.Get("Authorization"), + ) if err != nil { return c.JSON(err.StatusCode, err) } @@ -43,7 +49,11 @@ func (h *SOSPostHandler) WriteSOSPost(c echo.Context) error { return c.JSON(err.StatusCode, err) } - res, err := h.sosPostService.WriteSOSPost(c.Request().Context(), foundUser.FirebaseUID, &writeSOSPostRequest) + res, err := h.sosPostService.WriteSOSPost( + c.Request().Context(), + foundUser.FirebaseUID, + &writeSOSPostRequest, + ) if err != nil { return c.JSON(err.StatusCode, err) } @@ -133,7 +143,10 @@ func (h *SOSPostHandler) FindSOSPostByID(c echo.Context) error { // @Success 200 // @Router /posts/sos [put] func (h *SOSPostHandler) UpdateSOSPost(c echo.Context) error { - foundUser, err := h.authService.VerifyAuthAndGetUser(c.Request().Context(), c.Request().Header.Get("Authorization")) + foundUser, err := h.authService.VerifyAuthAndGetUser( + c.Request().Context(), + c.Request().Header.Get("Authorization"), + ) if err != nil { return c.JSON(err.StatusCode, err) } diff --git a/cmd/server/handler/user_handler.go b/cmd/server/handler/user_handler.go index 29e3ebec..4d436b53 100644 --- a/cmd/server/handler/user_handler.go +++ b/cmd/server/handler/user_handler.go @@ -63,7 +63,10 @@ func (h *UserHandler) CheckUserNickname(c echo.Context) error { return c.JSON(err.StatusCode, err) } - exists, err := h.userService.ExistsByNickname(c.Request().Context(), checkUserNicknameRequest.Nickname) + exists, err := h.userService.ExistsByNickname( + c.Request().Context(), + checkUserNicknameRequest.Nickname, + ) if err != nil { return c.JSON(err.StatusCode, err) } @@ -86,7 +89,10 @@ func (h *UserHandler) FindUserStatusByEmail(c echo.Context) error { return c.JSON(err.StatusCode, err) } - userData, err := h.userService.FindUser(c.Request().Context(), user.FindUserParams{Email: &providerRequest.Email}) + userData, err := h.userService.FindUser( + c.Request().Context(), + user.FindUserParams{Email: &providerRequest.Email}, + ) if err != nil { return c.JSON(http.StatusOK, user.StatusView{ Status: user.StatusNotRegistered, @@ -108,7 +114,10 @@ func (h *UserHandler) FindUserStatusByEmail(c echo.Context) error { // @Success 200 {object} user.ListWithoutPrivateInfo // @Router /users [get] func (h *UserHandler) FindUsers(c echo.Context) error { - _, err := h.authService.VerifyAuthAndGetUser(c.Request().Context(), c.Request().Header.Get("Authorization")) + _, err := h.authService.VerifyAuthAndGetUser( + c.Request().Context(), + c.Request().Header.Get("Authorization"), + ) if err != nil { return c.JSON(err.StatusCode, err) } @@ -140,7 +149,10 @@ func (h *UserHandler) FindUsers(c echo.Context) error { // @Success 200 {object} user.ProfileView // @Router /users/{userID} [get] func (h *UserHandler) FindUserByID(c echo.Context) error { - _, err := h.authService.VerifyAuthAndGetUser(c.Request().Context(), c.Request().Header.Get("Authorization")) + _, err := h.authService.VerifyAuthAndGetUser( + c.Request().Context(), + c.Request().Header.Get("Authorization"), + ) if err != nil { return c.JSON(err.StatusCode, err) } @@ -170,7 +182,10 @@ func (h *UserHandler) FindUserByID(c echo.Context) error { // @Success 200 {object} user.MyProfileView // @Router /users/me [get] func (h *UserHandler) FindMyProfile(c echo.Context) error { - res, err := h.authService.VerifyAuthAndGetUser(c.Request().Context(), c.Request().Header.Get("Authorization")) + res, err := h.authService.VerifyAuthAndGetUser( + c.Request().Context(), + c.Request().Header.Get("Authorization"), + ) if err != nil { return c.JSON(err.StatusCode, err) } @@ -189,7 +204,10 @@ func (h *UserHandler) FindMyProfile(c echo.Context) error { // @Success 200 {object} user.MyProfileView // @Router /users/me [put] func (h *UserHandler) UpdateMyProfile(c echo.Context) error { - foundUser, err := h.authService.VerifyAuthAndGetUser(c.Request().Context(), c.Request().Header.Get("Authorization")) + foundUser, err := h.authService.VerifyAuthAndGetUser( + c.Request().Context(), + c.Request().Header.Get("Authorization"), + ) if err != nil { return c.JSON(err.StatusCode, err) } @@ -222,7 +240,10 @@ func (h *UserHandler) UpdateMyProfile(c echo.Context) error { // @Success 204 // @Router /users/me [delete] func (h *UserHandler) DeleteMyAccount(c echo.Context) error { - loggedInUser, err := h.authService.VerifyAuthAndGetUser(c.Request().Context(), c.Request().Header.Get("Authorization")) + loggedInUser, err := h.authService.VerifyAuthAndGetUser( + c.Request().Context(), + c.Request().Header.Get("Authorization"), + ) if err != nil { return c.JSON(err.StatusCode, err) } @@ -245,7 +266,10 @@ func (h *UserHandler) DeleteMyAccount(c echo.Context) error { // @Success 200 // @Router /users/me/pets [put] func (h *UserHandler) AddMyPets(c echo.Context) error { - foundUser, err := h.authService.VerifyAuthAndGetUser(c.Request().Context(), c.Request().Header.Get("Authorization")) + foundUser, err := h.authService.VerifyAuthAndGetUser( + c.Request().Context(), + c.Request().Header.Get("Authorization"), + ) if err != nil { return c.JSON(err.StatusCode, err) } @@ -273,7 +297,10 @@ func (h *UserHandler) AddMyPets(c echo.Context) error { // @Success 200 {object} pet.ListView // @Router /users/me/pets [get] func (h *UserHandler) FindMyPets(c echo.Context) error { - foundUser, err := h.authService.VerifyAuthAndGetUser(c.Request().Context(), c.Request().Header.Get("Authorization")) + foundUser, err := h.authService.VerifyAuthAndGetUser( + c.Request().Context(), + c.Request().Header.Get("Authorization"), + ) if err != nil { return c.JSON(err.StatusCode, err) } @@ -303,7 +330,10 @@ func (h *UserHandler) FindMyPets(c echo.Context) error { // @Success 200 {object} pet.DetailView // @Router /users/me/pets/{petID} [put] func (h *UserHandler) UpdateMyPet(c echo.Context) error { - foundUser, err := h.authService.VerifyAuthAndGetUser(c.Request().Context(), c.Request().Header.Get("Authorization")) + foundUser, err := h.authService.VerifyAuthAndGetUser( + c.Request().Context(), + c.Request().Header.Get("Authorization"), + ) if err != nil { return c.JSON(err.StatusCode, err) } @@ -336,7 +366,10 @@ func (h *UserHandler) UpdateMyPet(c echo.Context) error { // @Success 204 // @Router /users/me/pets/{petID} [delete] func (h *UserHandler) DeleteMyPet(c echo.Context) error { - foundUser, err := h.authService.VerifyAuthAndGetUser(c.Request().Context(), c.Request().Header.Get("Authorization")) + foundUser, err := h.authService.VerifyAuthAndGetUser( + c.Request().Context(), + c.Request().Header.Get("Authorization"), + ) if err != nil { return c.JSON(err.StatusCode, err) } diff --git a/cmd/server/main.go b/cmd/server/main.go index b83bf1bb..5962b7e5 100644 --- a/cmd/server/main.go +++ b/cmd/server/main.go @@ -36,7 +36,9 @@ func main() { var app *firebaseinfra.FirebaseApp var err error if configs.GetFirebaseCredentialsJSON() != (configs.FirebaseCredentialsJSONType{}) { - app, err = firebaseinfra.NewFirebaseAppFromCredentialsJSON(configs.GetFirebaseCredentialsJSON()) + app, err = firebaseinfra.NewFirebaseAppFromCredentialsJSON( + configs.GetFirebaseCredentialsJSON(), + ) if err != nil { log.Fatal(err) } diff --git a/internal/configs/server.go b/internal/configs/server.go index 6e3e366e..11307c79 100644 --- a/internal/configs/server.go +++ b/internal/configs/server.go @@ -38,10 +38,14 @@ type FirebaseCredentialsJSONType struct { func GetFirebaseCredentialsJSON() FirebaseCredentialsJSONType { return FirebaseCredentialsJSONType{ - Type: os.Getenv("FIREBASE_CREDENTIALS_TYPE"), - ProjectID: os.Getenv("FIREBASE_CREDENTIALS_PROJECT_ID"), - PrivateKeyID: os.Getenv("FIREBASE_CREDENTIALS_PRIVATE_KEY_ID"), - PrivateKey: strings.ReplaceAll(os.Getenv("FIREBASE_CREDENTIALS_PRIVATE_KEY"), "\\n", "\n"), + Type: os.Getenv("FIREBASE_CREDENTIALS_TYPE"), + ProjectID: os.Getenv("FIREBASE_CREDENTIALS_PROJECT_ID"), + PrivateKeyID: os.Getenv("FIREBASE_CREDENTIALS_PRIVATE_KEY_ID"), + PrivateKey: strings.ReplaceAll( + os.Getenv("FIREBASE_CREDENTIALS_PRIVATE_KEY"), + "\\n", + "\n", + ), ClientEmail: os.Getenv("FIREBASE_CREDENTIALS_CLIENT_EMAIL"), ClientID: os.Getenv("FIREBASE_CREDENTIALS_CLIENT_ID"), AuthURI: os.Getenv("FIREBASE_CREDENTIALS_AUTH_URI"), @@ -87,7 +91,8 @@ func init() { panic("KAKAO_REDIRECT_URI is required") } - if FirebaseCredentialsPath == "" && GetFirebaseCredentialsJSON() == (FirebaseCredentialsJSONType{}) { + if FirebaseCredentialsPath == "" && + GetFirebaseCredentialsJSON() == (FirebaseCredentialsJSONType{}) { panic("FIREBASE_CREDENTIALS_PATH or FIREBASE_CREDENTIALS_JSON is required") } diff --git a/internal/domain/auth/view.go b/internal/domain/auth/view.go index 83020128..d8cd4082 100644 --- a/internal/domain/auth/view.go +++ b/internal/domain/auth/view.go @@ -15,7 +15,10 @@ type KakaoCallbackView struct { PhotoURL string `json:"photoURL"` } -func NewKakaoCallbackView(authToken string, kakaoUserProfile *kakaoinfra.KakaoUserProfile) KakaoCallbackView { +func NewKakaoCallbackView( + authToken string, + kakaoUserProfile *kakaoinfra.KakaoUserProfile, +) KakaoCallbackView { return KakaoCallbackView{ AuthToken: authToken, FirebaseProviderType: user.FirebaseProviderTypeKakao, diff --git a/internal/domain/breed/view.go b/internal/domain/breed/view.go index d2af3970..9a5b68d0 100644 --- a/internal/domain/breed/view.go +++ b/internal/domain/breed/view.go @@ -26,7 +26,9 @@ type ListView struct { } func ToListViewFromRows(page, size int, rows []databasegen.FindBreedsRow) *ListView { - bl := &ListView{PaginatedView: pnd.NewPaginatedView(page, size, false, make([]*DetailView, len(rows)))} + bl := &ListView{ + PaginatedView: pnd.NewPaginatedView(page, size, false, make([]*DetailView, len(rows))), + } for i, row := range rows { bl.Items[i] = ToDetailViewFromRows(row) } diff --git a/internal/domain/chat/model.go b/internal/domain/chat/model.go index 02ed5a30..10dece86 100644 --- a/internal/domain/chat/model.go +++ b/internal/domain/chat/model.go @@ -29,17 +29,17 @@ const ( ) type RoomSimpleInfo struct { - ID uuid.UUID `field:"id" json:"id"` - RoomName string `field:"roomName" json:"roomName"` - RoomType string `field:"roomType" json:"roomType"` - JoinUser *JoinUsersSimpleInfo `field:"joinUser" json:"joinUser"` + ID uuid.UUID `field:"id" json:"id"` + RoomName string `field:"roomName" json:"roomName"` + RoomType string `field:"roomType" json:"roomType"` + JoinUser *JoinUsersSimpleInfo `field:"joinUser" json:"joinUser"` CreatedAt time.Time `field:"createdAt" json:"createdAt"` UpdatedAt time.Time `field:"updatedAt" json:"updatedAt"` } type JoinUsersSimpleInfo struct { - ID uuid.UUID `field:"id" json:"userId"` - UserNickname string `field:"nickname" json:"userNickname"` + ID uuid.UUID `field:"id" json:"userId"` + UserNickname string `field:"nickname" json:"userNickname"` UserProfileImage string `field:"profileImage" json:"profileImageUrl"` } @@ -55,23 +55,23 @@ type JoinRoomsView struct { } type UserChatRoomMessageView struct { - ID uuid.UUID `field:"id" json:"id"` + ID uuid.UUID `field:"id" json:"id"` MessageType string `field:"messageType" json:"messageType"` } type Message struct { - ID uuid.UUID `field:"id" json:"id"` - UserID uuid.UUID `field:"userID" json:"userId"` - RoomID uuid.UUID `field:"roomID" json:"roomId"` + ID uuid.UUID `field:"id" json:"id"` + UserID uuid.UUID `field:"userID" json:"userId"` + RoomID uuid.UUID `field:"roomID" json:"roomId"` MessageType string `field:"messageType" json:"messageType"` - Content string `field:"content" json:"content"` - CreatedAt time.Time `field:"createdAt" json:"createdAt"` + Content string `field:"content" json:"content"` + CreatedAt time.Time `field:"createdAt" json:"createdAt"` } type MessageCursorView struct { HasNext bool `field:"hasNext" json:"hasNext"` - NextID *uuid.UUID `field:"nextID" json:"next,omitempty"` + NextID *uuid.UUID `field:"nextID" json:"next,omitempty"` HasPrev bool `field:"hasPrev" json:"hasPrev"` - PrevID *uuid.UUID `field:"prevID" json:"prev,omitempty"` - Items *[]Message `field:"items" json:"items,omitempty"` + PrevID *uuid.UUID `field:"prevID" json:"prev,omitempty"` + Items *[]Message `field:"items" json:"items,omitempty"` } diff --git a/internal/domain/media/model.go b/internal/domain/media/model.go index ec6982e5..b28998ff 100644 --- a/internal/domain/media/model.go +++ b/internal/domain/media/model.go @@ -13,9 +13,9 @@ func (mt Type) String() string { } type ViewForSOSPost struct { - ID uuid.UUID `field:"id" json:"id"` + ID uuid.UUID `field:"id" json:"id"` MediaType Type `field:"media_type" json:"media_type"` - URL string `field:"url" json:"url"` + URL string `field:"url" json:"url"` CreatedAt string `field:"created_at" json:"created_at"` UpdatedAt string `field:"updated_at" json:"updated_at"` DeletedAt string `field:"deleted_at" json:"deleted_at"` diff --git a/internal/domain/media/view.go b/internal/domain/media/view.go index 19c29fd3..730852bb 100644 --- a/internal/domain/media/view.go +++ b/internal/domain/media/view.go @@ -67,7 +67,9 @@ func ToDetailViewFromViewForSOSPost(media ViewForSOSPost) *DetailView { } } -func ToListViewFromResourceMediaRows(resourceMediaList []databasegen.FindResourceMediaRow) ListView { +func ToListViewFromResourceMediaRows( + resourceMediaList []databasegen.FindResourceMediaRow, +) ListView { mediaViewList := make(ListView, len(resourceMediaList)) for i, resourceMedia := range resourceMediaList { mediaViewList[i] = ToDetailViewFromResourceMediaRows(resourceMedia) diff --git a/internal/domain/pet/model.go b/internal/domain/pet/model.go index e52e27fd..9d079324 100644 --- a/internal/domain/pet/model.go +++ b/internal/domain/pet/model.go @@ -128,19 +128,19 @@ func ToWithProfileImageFromSOSPostIDRow(row databasegen.FindPetsBySOSPostIDRow) // ViewForSOSPost // v_pets_for_sos_posts 뷰를 위한 구조체 type ViewForSOSPost struct { - ID uuid.UUID `field:"id" json:"id"` - OwnerID uuid.UUID `field:"owner_id" json:"owner_id"` - Name string `field:"name" json:"name"` - PetType commonvo.PetType `field:"pet_type" json:"pet_type"` - Sex Gender `field:"sex" json:"sex"` - Neutered bool `field:"neutered" json:"neutered"` - Breed string `field:"breed" json:"breed"` - BirthDate datatype.Date `field:"birth_date" json:"birth_date"` - WeightInKg decimal.Decimal `field:"weight_in_kg" json:"weight_in_kg"` - Remarks string `field:"remarks" json:"remarks"` - CreatedAt string `field:"created_at" json:"created_at"` - UpdatedAt string `field:"updated_at" json:"updated_at"` - DeletedAt string `field:"deleted_at" json:"deleted_at"` + ID uuid.UUID `field:"id" json:"id"` + OwnerID uuid.UUID `field:"owner_id" json:"owner_id"` + Name string `field:"name" json:"name"` + PetType commonvo.PetType `field:"pet_type" json:"pet_type"` + Sex Gender `field:"sex" json:"sex"` + Neutered bool `field:"neutered" json:"neutered"` + Breed string `field:"breed" json:"breed"` + BirthDate datatype.Date `field:"birth_date" json:"birth_date"` + WeightInKg decimal.Decimal `field:"weight_in_kg" json:"weight_in_kg"` + Remarks string `field:"remarks" json:"remarks"` + CreatedAt string `field:"created_at" json:"created_at"` + UpdatedAt string `field:"updated_at" json:"updated_at"` + DeletedAt string `field:"deleted_at" json:"deleted_at"` ProfileImageURL *string `field:"profile_image_url" json:"profile_image_url"` } diff --git a/internal/domain/pet/request.go b/internal/domain/pet/request.go index 17c35573..a399b97a 100644 --- a/internal/domain/pet/request.go +++ b/internal/domain/pet/request.go @@ -11,23 +11,23 @@ type AddPetsToOwnerRequest struct { } type AddPetRequest struct { - Name string `json:"name" validate:"required"` - PetType commonvo.PetType `json:"petType" validate:"required,oneof=dog cat"` - Sex Gender `json:"sex" validate:"required,oneof=male female"` - Neutered bool `json:"neutered" validate:"required"` - Breed string `json:"breed" validate:"required"` - BirthDate string `json:"birthDate" validate:"required"` - WeightInKg decimal.Decimal `json:"weightInKg" validate:"required"` + Name string `json:"name" validate:"required"` + PetType commonvo.PetType `json:"petType" validate:"required,oneof=dog cat"` + Sex Gender `json:"sex" validate:"required,oneof=male female"` + Neutered bool `json:"neutered" validate:"required"` + Breed string `json:"breed" validate:"required"` + BirthDate string `json:"birthDate" validate:"required"` + WeightInKg decimal.Decimal `json:"weightInKg" validate:"required"` Remarks string `json:"remarks"` ProfileImageID uuid.NullUUID `json:"profileImageId"` } type UpdatePetRequest struct { - Name string `json:"name" validate:"required"` - Neutered bool `json:"neutered" validate:"required"` - Breed string `json:"breed" validate:"required"` - BirthDate string `json:"birthDate" validate:"required"` - WeightInKg decimal.Decimal `json:"weightInKg" validate:"required"` + Name string `json:"name" validate:"required"` + Neutered bool `json:"neutered" validate:"required"` + Breed string `json:"breed" validate:"required"` + BirthDate string `json:"birthDate" validate:"required"` + WeightInKg decimal.Decimal `json:"weightInKg" validate:"required"` Remarks string `json:"remarks"` ProfileImageID uuid.NullUUID `json:"profileImageId"` } diff --git a/internal/domain/sospost/model.go b/internal/domain/sospost/model.go index cc8e25b9..63f90591 100644 --- a/internal/domain/sospost/model.go +++ b/internal/domain/sospost/model.go @@ -77,22 +77,22 @@ type SOSPostList struct { } type SOSPostInfo struct { - ID uuid.UUID `field:"id" json:"id"` - AuthorID uuid.UUID `field:"author" json:"author"` - Title string `field:"title" json:"title"` - Content string `field:"content" json:"content"` - Media media.ViewListForSOSPost `field:"media" json:"media"` - Conditions soscondition.ViewListForSOSPost `field:"conditions" json:"conditions"` - Pets pet.ViewListForSOSPost `field:"pets" json:"pets"` - Reward string `field:"reward" json:"reward"` - Dates SOSDatesList `field:"dates" json:"dates"` - CareType CareType `field:"careType" json:"careType"` + ID uuid.UUID `field:"id" json:"id"` + AuthorID uuid.UUID `field:"author" json:"author"` + Title string `field:"title" json:"title"` + Content string `field:"content" json:"content"` + Media media.ViewListForSOSPost `field:"media" json:"media"` + Conditions soscondition.ViewListForSOSPost `field:"conditions" json:"conditions"` + Pets pet.ViewListForSOSPost `field:"pets" json:"pets"` + Reward string `field:"reward" json:"reward"` + Dates SOSDatesList `field:"dates" json:"dates"` + CareType CareType `field:"careType" json:"careType"` CarerGender CarerGender `field:"carerGender" json:"carerGender"` - RewardType RewardType `field:"rewardType" json:"rewardType"` + RewardType RewardType `field:"rewardType" json:"rewardType"` ThumbnailID uuid.NullUUID `field:"thumbnailId" json:"thumbnailId"` - CreatedAt time.Time `field:"createdAt" json:"createdAt"` - UpdatedAt time.Time `field:"updatedAt" json:"updatedAt"` - DeletedAt time.Time `field:"deletedAt" json:"deletedAt"` + CreatedAt time.Time `field:"createdAt" json:"createdAt"` + UpdatedAt time.Time `field:"updatedAt" json:"updatedAt"` + DeletedAt time.Time `field:"deletedAt" json:"deletedAt"` } type SOSPostInfoList struct { @@ -148,7 +148,10 @@ func ToInfoFromFindAuthorIDRow(row databasegen.FindSOSPostsByAuthorIDRow) *SOSPo } } -func ToInfoListFromFindAuthorIDRow(rows []databasegen.FindSOSPostsByAuthorIDRow, page, size int) *SOSPostInfoList { +func ToInfoListFromFindAuthorIDRow( + rows []databasegen.FindSOSPostsByAuthorIDRow, + page, size int, +) *SOSPostInfoList { sl := NewSOSPostInfoList(page, size) for _, row := range rows { sl.Items = append(sl.Items, *ToInfoFromFindAuthorIDRow(row)) @@ -248,12 +251,12 @@ func ParseSOSDatesList(rows json.RawMessage) SOSDatesList { } type SOSDates struct { - ID uuid.UUID `field:"id" json:"id"` + ID uuid.UUID `field:"id" json:"id"` DateStartAt string `field:"date_start_at" json:"date_start_at"` - DateEndAt string `field:"date_end_at" json:"date_end_at"` - CreatedAt time.Time `field:"created_at" json:"created_at"` - UpdatedAt time.Time `field:"updated_at" json:"updated_at"` - DeletedAt time.Time `field:"deleted_at" json:"deleted_at"` + DateEndAt string `field:"date_end_at" json:"date_end_at"` + CreatedAt time.Time `field:"created_at" json:"created_at"` + UpdatedAt time.Time `field:"updated_at" json:"updated_at"` + DeletedAt time.Time `field:"deleted_at" json:"deleted_at"` } type SOSDatesList []*SOSDates diff --git a/internal/domain/sospost/request.go b/internal/domain/sospost/request.go index 495f7506..ee0b08c7 100644 --- a/internal/domain/sospost/request.go +++ b/internal/domain/sospost/request.go @@ -3,28 +3,28 @@ package sospost import "github.com/google/uuid" type WriteSOSPostRequest struct { - Title string `json:"title" validate:"required"` - Content string `json:"content" validate:"required"` - ImageIDs []uuid.UUID `json:"imageIds" validate:"required"` - Reward string `json:"reward" validate:"required"` - Dates []SOSDateView `json:"dates" validate:"required,gte=1"` - CareType CareType `json:"careType" validate:"required,oneof=foster visiting"` - CarerGender CarerGender `json:"carerGender" validate:"required,oneof=male female all"` - RewardType RewardType `json:"rewardType" validate:"required,oneof=fee gifticon negotiable"` + Title string `json:"title" validate:"required"` + Content string `json:"content" validate:"required"` + ImageIDs []uuid.UUID `json:"imageIds" validate:"required"` + Reward string `json:"reward" validate:"required"` + Dates []SOSDateView `json:"dates" validate:"required,gte=1"` + CareType CareType `json:"careType" validate:"required,oneof=foster visiting"` + CarerGender CarerGender `json:"carerGender" validate:"required,oneof=male female all"` + RewardType RewardType `json:"rewardType" validate:"required,oneof=fee gifticon negotiable"` ConditionIDs []uuid.UUID `json:"conditionIds" validate:"required"` - PetIDs []uuid.UUID `json:"petIds" validate:"required,gte=1"` + PetIDs []uuid.UUID `json:"petIds" validate:"required,gte=1"` } type UpdateSOSPostRequest struct { - ID uuid.UUID `json:"id" validate:"required"` - Title string `json:"title" validate:"required"` - Content string `json:"content" validate:"required"` - ImageIDs []uuid.UUID `json:"imageIds" validate:"required"` - Dates []SOSDateView `json:"dates" validate:"required,gte=1"` - Reward string `json:"reward" validate:"required"` - CareType CareType `json:"careType" validate:"required,oneof=foster visiting"` - CarerGender CarerGender `json:"carerGender" validate:"required,oneof=male female all"` - RewardType RewardType `json:"rewardType" validate:"required,oneof=fee gifticon negotiable"` + ID uuid.UUID `json:"id" validate:"required"` + Title string `json:"title" validate:"required"` + Content string `json:"content" validate:"required"` + ImageIDs []uuid.UUID `json:"imageIds" validate:"required"` + Dates []SOSDateView `json:"dates" validate:"required,gte=1"` + Reward string `json:"reward" validate:"required"` + CareType CareType `json:"careType" validate:"required,oneof=foster visiting"` + CarerGender CarerGender `json:"carerGender" validate:"required,oneof=male female all"` + RewardType RewardType `json:"rewardType" validate:"required,oneof=fee gifticon negotiable"` ConditionIDs []uuid.UUID `json:"conditionIds" validate:"required"` - PetIDs []uuid.UUID `json:"petIds" validate:"required,gte=1"` + PetIDs []uuid.UUID `json:"petIds" validate:"required,gte=1"` } diff --git a/internal/domain/user/request.go b/internal/domain/user/request.go index fabf0a05..df14be47 100644 --- a/internal/domain/user/request.go +++ b/internal/domain/user/request.go @@ -8,12 +8,12 @@ import ( ) type RegisterUserRequest struct { - Email string `json:"email" validate:"required,email"` - Nickname string `json:"nickname" validate:"required"` - Fullname string `json:"fullname" validate:"required"` + Email string `json:"email" validate:"required,email"` + Nickname string `json:"nickname" validate:"required"` + Fullname string `json:"fullname" validate:"required"` ProfileImageID uuid.NullUUID `json:"profileImageId"` FirebaseProviderType FirebaseProviderType `json:"fbProviderType" validate:"required"` - FirebaseUID string `json:"fbUid" validate:"required"` + FirebaseUID string `json:"fbUid" validate:"required"` } func (r *RegisterUserRequest) ToDBParams() databasegen.CreateUserParams { @@ -38,6 +38,6 @@ type UserStatusRequest struct { } type UpdateUserRequest struct { - Nickname string `json:"nickname" validate:"required"` + Nickname string `json:"nickname" validate:"required"` ProfileImageID uuid.NullUUID `json:"profileImageId" validate:"omitempty"` } diff --git a/internal/domain/user/view.go b/internal/domain/user/view.go index 8fb171e5..a6ef3e97 100644 --- a/internal/domain/user/view.go +++ b/internal/domain/user/view.go @@ -98,7 +98,10 @@ type ListWithoutPrivateInfo struct { *pnd.PaginatedView[WithoutPrivateInfo] } -func ToListWithoutPrivateInfo(page, size int, rows []databasegen.FindUsersRow) *ListWithoutPrivateInfo { +func ToListWithoutPrivateInfo( + page, size int, + rows []databasegen.FindUsersRow, +) *ListWithoutPrivateInfo { ul := &ListWithoutPrivateInfo{PaginatedView: pnd.NewPaginatedView( page, size, false, make([]WithoutPrivateInfo, 0), )} diff --git a/internal/infra/bucket/client.go b/internal/infra/bucket/client.go index a4db700d..73d1af40 100644 --- a/internal/infra/bucket/client.go +++ b/internal/infra/bucket/client.go @@ -75,7 +75,9 @@ func (c *S3Client) uploadToS3(file io.ReadSeeker, fullPath string) (*s3.PutObjec return result, nil } -func (c *S3Client) GetFileRequest(fileName string) (req *request.Request, output *s3.GetObjectOutput) { +func (c *S3Client) GetFileRequest( + fileName string, +) (req *request.Request, output *s3.GetObjectOutput) { return c.s3Client.GetObjectRequest(&s3.GetObjectInput{ Bucket: aws.String(c.bucketName), Key: aws.String(fileName), diff --git a/internal/infra/database/transaction.go b/internal/infra/database/transaction.go index bd41cec5..137d1d68 100644 --- a/internal/infra/database/transaction.go +++ b/internal/infra/database/transaction.go @@ -85,11 +85,19 @@ func WithTransaction(ctx context.Context, conn *DB, f func(tx *Tx) *pnd.AppError return tx.Commit() } -func (tx *Tx) ExecContext(ctx context.Context, query string, args ...interface{}) (sql.Result, error) { +func (tx *Tx) ExecContext( + ctx context.Context, + query string, + args ...interface{}, +) (sql.Result, error) { return tx.Tx.ExecContext(ctx, query, args...) } -func (tx *Tx) QueryContext(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error) { +func (tx *Tx) QueryContext( + ctx context.Context, + query string, + args ...interface{}, +) (*sql.Rows, error) { return tx.Tx.QueryContext(ctx, query, args...) } diff --git a/internal/infra/kakao/client.go b/internal/infra/kakao/client.go index c22f6638..3eca3b29 100644 --- a/internal/infra/kakao/client.go +++ b/internal/infra/kakao/client.go @@ -22,7 +22,10 @@ func NewKakaoDefaultClient() *KakaoDefaultClient { return &KakaoDefaultClient{} } -func (kakaoClient *KakaoDefaultClient) FetchAccessToken(ctx context.Context, code string) (*KakaoTokenResponse, error) { +func (kakaoClient *KakaoDefaultClient) FetchAccessToken( + ctx context.Context, + code string, +) (*KakaoTokenResponse, error) { kakaoTokenRequest := NewKakaoTokenRequest( configs.KakaoRestAPIKey, configs.KakaoRedirectURI, @@ -63,9 +66,17 @@ func (kakaoClient *KakaoDefaultClient) FetchAccessToken(ctx context.Context, cod return kakaoTokenResponse, nil } -func (kakaoClient *KakaoDefaultClient) FetchUserProfile(ctx context.Context, code string) (*KakaoUserProfile, error) { +func (kakaoClient *KakaoDefaultClient) FetchUserProfile( + ctx context.Context, + code string, +) (*KakaoUserProfile, error) { client := &http.Client{} - req, _ := http.NewRequestWithContext(ctx, http.MethodGet, "https://kapi.kakao.com/v2/user/me", nil) + req, _ := http.NewRequestWithContext( + ctx, + http.MethodGet, + "https://kapi.kakao.com/v2/user/me", + nil, + ) req.Header.Add("Authorization", "Bearer "+code) res, err := client.Do(req) if err != nil { diff --git a/internal/service/auth_service.go b/internal/service/auth_service.go index 0a4b9a85..5269fdf9 100644 --- a/internal/service/auth_service.go +++ b/internal/service/auth_service.go @@ -20,7 +20,10 @@ type FirebaseBearerAuthService struct { userService *UserService } -func NewFirebaseBearerAuthService(authClient *auth.Client, userService *UserService) *FirebaseBearerAuthService { +func NewFirebaseBearerAuthService( + authClient *auth.Client, + userService *UserService, +) *FirebaseBearerAuthService { return &FirebaseBearerAuthService{ authClient: authClient, userService: userService, @@ -59,7 +62,10 @@ func (service *FirebaseBearerAuthService) VerifyAuthAndGetUser( return foundUser.ToInternalView(), nil } -func (service *FirebaseBearerAuthService) CustomToken(ctx context.Context, uid string) (*string, *pnd.AppError) { +func (service *FirebaseBearerAuthService) CustomToken( + ctx context.Context, + uid string, +) (*string, *pnd.AppError) { customToken, err := service.authClient.CustomToken(ctx, uid) if err != nil { return nil, pnd.ErrUnknown(err) @@ -68,7 +74,9 @@ func (service *FirebaseBearerAuthService) CustomToken(ctx context.Context, uid s return &customToken, nil } -func (service *FirebaseBearerAuthService) stripBearerToken(authHeader string) (string, *pnd.AppError) { +func (service *FirebaseBearerAuthService) stripBearerToken( + authHeader string, +) (string, *pnd.AppError) { if len(authHeader) > 6 && strings.ToUpper(authHeader[0:7]) == "BEARER " { return authHeader[7:], nil } diff --git a/internal/service/chat_service.go b/internal/service/chat_service.go index 71f924e7..11fb28b9 100644 --- a/internal/service/chat_service.go +++ b/internal/service/chat_service.go @@ -80,7 +80,11 @@ func (s *ChatService) CreateRoom( return chat.ToCreateRoom(row, chat.ToJoinUsers(userData)), nil } -func (s *ChatService) JoinRoom(ctx context.Context, roomID uuid.UUID, fbUID string) (*chat.JoinRoom, *pnd.AppError) { +func (s *ChatService) JoinRoom( + ctx context.Context, + roomID uuid.UUID, + fbUID string, +) (*chat.JoinRoom, *pnd.AppError) { userData, err := databasegen.New(s.conn).FindUser(ctx, databasegen.FindUserParams{ FbUid: utils.StrToNullStr(fbUID), }) @@ -156,7 +160,10 @@ func (s *ChatService) LeaveRoom(ctx context.Context, roomID uuid.UUID, fbUID str return nil } -func (s *ChatService) FindAllByUserUID(ctx context.Context, fbUID string) (*chat.JoinRoomsView, *pnd.AppError) { +func (s *ChatService) FindAllByUserUID( + ctx context.Context, + fbUID string, +) (*chat.JoinRoomsView, *pnd.AppError) { userData, err := databasegen.New(s.conn).FindUser(ctx, databasegen.FindUserParams{ FbUid: utils.StrToNullStr(fbUID), }) @@ -172,7 +179,11 @@ func (s *ChatService) FindAllByUserUID(ctx context.Context, fbUID string) (*chat return chat.ToUserChatRoomsView(rows), nil } -func (s *ChatService) FindChatRoomByUIDAndRoomID(ctx context.Context, fbUID string, roomID uuid.UUID) ( +func (s *ChatService) FindChatRoomByUIDAndRoomID( + ctx context.Context, + fbUID string, + roomID uuid.UUID, +) ( *chat.RoomSimpleInfo, *pnd.AppError, ) { userData, err := databasegen.New(s.conn).FindUser(ctx, databasegen.FindUserParams{ @@ -204,12 +215,13 @@ func (s *ChatService) FindChatRoomMessagesByRoomID( // prev와 next에 따라 다른 쿼리를 실행 if prev.Valid && next.Valid { // prev와 next 모두 존재하는 경우 - rows, err := databasegen.New(s.conn).FindBetweenMessagesByRoomID(ctx, databasegen.FindBetweenMessagesByRoomIDParams{ - Prev: prev, - Next: next, - Limit: int32(limit), - RoomID: roomID, - }) + rows, err := databasegen.New(s.conn). + FindBetweenMessagesByRoomID(ctx, databasegen.FindBetweenMessagesByRoomIDParams{ + Prev: prev, + Next: next, + Limit: int32(limit), + RoomID: roomID, + }) if err != nil { return nil, pnd.FromPostgresError(err) } @@ -226,19 +238,21 @@ func (s *ChatService) FindChatRoomMessagesByRoomID( // 가장 오래된 메시지의 ID를 가져온다. lastID := rows[len(rows)-1].ID - hasPrev, hasPrevError := databasegen.New(s.conn).HasPrevMessages(ctx, databasegen.HasPrevMessagesParams{ - ID: lastID, - RoomID: roomID, - }) + hasPrev, hasPrevError := databasegen.New(s.conn). + HasPrevMessages(ctx, databasegen.HasPrevMessagesParams{ + ID: lastID, + RoomID: roomID, + }) if hasPrevError != nil { return nil, pnd.FromPostgresError(hasPrevError) } - hasNext, hasNextError := databasegen.New(s.conn).HasNextMessages(ctx, databasegen.HasNextMessagesParams{ - ID: firstID, - RoomID: roomID, - }) + hasNext, hasNextError := databasegen.New(s.conn). + HasNextMessages(ctx, databasegen.HasNextMessagesParams{ + ID: firstID, + RoomID: roomID, + }) if hasNextError != nil { return nil, pnd.FromPostgresError(hasNextError) @@ -249,11 +263,12 @@ func (s *ChatService) FindChatRoomMessagesByRoomID( if prev.Valid { // prev만 존재하는 경우 - rows, err := databasegen.New(s.conn).FindPrevMessageByRoomID(ctx, databasegen.FindPrevMessageByRoomIDParams{ - Prev: prev, - Limit: int32(limit), - RoomID: roomID, - }) + rows, err := databasegen.New(s.conn). + FindPrevMessageByRoomID(ctx, databasegen.FindPrevMessageByRoomIDParams{ + Prev: prev, + Limit: int32(limit), + RoomID: roomID, + }) if err != nil { return nil, pnd.FromPostgresError(err) } @@ -281,11 +296,12 @@ func (s *ChatService) FindChatRoomMessagesByRoomID( if next.Valid { // next만 존재하는 경우 - rows, err := databasegen.New(s.conn).FindNextMessageByRoomID(ctx, databasegen.FindNextMessageByRoomIDParams{ - Next: next, - Limit: int32(limit), - RoomID: roomID, - }) + rows, err := databasegen.New(s.conn). + FindNextMessageByRoomID(ctx, databasegen.FindNextMessageByRoomIDParams{ + Next: next, + Limit: int32(limit), + RoomID: roomID, + }) if err != nil { return nil, pnd.FromPostgresError(err) } @@ -312,10 +328,11 @@ func (s *ChatService) FindChatRoomMessagesByRoomID( } // prev와 next가 모두 없는 경우 Size만큼 최신 메시지를 가져온다. - rows, err := databasegen.New(s.conn).FindMessagesByRoomIDAndSize(ctx, databasegen.FindMessagesByRoomIDAndSizeParams{ - Limit: int32(limit), - RoomID: roomID, - }) + rows, err := databasegen.New(s.conn). + FindMessagesByRoomIDAndSize(ctx, databasegen.FindMessagesByRoomIDAndSizeParams{ + Limit: int32(limit), + RoomID: roomID, + }) if err != nil { return nil, pnd.FromPostgresError(err) } diff --git a/internal/service/media_service.go b/internal/service/media_service.go index 27367c9b..6b879126 100644 --- a/internal/service/media_service.go +++ b/internal/service/media_service.go @@ -74,10 +74,14 @@ func (s *MediaService) CreateMedia( return media.ToDetailViewFromCreated(created), nil } -func (s *MediaService) FindMediaByID(ctx context.Context, id uuid.UUID) (*media.DetailView, *pnd.AppError) { - mediaData, err := databasegen.New(s.conn).FindSingleMedia(ctx, databasegen.FindSingleMediaParams{ - ID: uuid.NullUUID{UUID: id, Valid: true}, - }) +func (s *MediaService) FindMediaByID( + ctx context.Context, + id uuid.UUID, +) (*media.DetailView, *pnd.AppError) { + mediaData, err := databasegen.New(s.conn). + FindSingleMedia(ctx, databasegen.FindSingleMediaParams{ + ID: uuid.NullUUID{UUID: id, Valid: true}, + }) if err != nil { return nil, pnd.FromPostgresError(err) } @@ -85,7 +89,10 @@ func (s *MediaService) FindMediaByID(ctx context.Context, id uuid.UUID) (*media. return media.ToDetailView(mediaData), nil } -func (s *MediaService) FindMediasByIDs(ctx context.Context, ids []uuid.UUID) ([]media.DetailView, *pnd.AppError) { +func (s *MediaService) FindMediasByIDs( + ctx context.Context, + ids []uuid.UUID, +) ([]media.DetailView, *pnd.AppError) { if len(ids) == 0 { return make([]media.DetailView, 0), nil } @@ -93,10 +100,11 @@ func (s *MediaService) FindMediasByIDs(ctx context.Context, ids []uuid.UUID) ([] // TODO: filter unique IDs idsToGet := make([]uuid.UUID, 0) idsToGet = append(idsToGet, ids...) - mediaDataList, err := databasegen.New(s.conn).FindMediasByIDs(ctx, databasegen.FindMediasByIDsParams{ - Ids: idsToGet, - IncludeDeleted: false, - }) + mediaDataList, err := databasegen.New(s.conn). + FindMediasByIDs(ctx, databasegen.FindMediasByIDsParams{ + Ids: idsToGet, + IncludeDeleted: false, + }) if err != nil { return nil, pnd.FromPostgresError(err) } diff --git a/internal/service/sos_condition_service.go b/internal/service/sos_condition_service.go index 9219708e..de3e9807 100644 --- a/internal/service/sos_condition_service.go +++ b/internal/service/sos_condition_service.go @@ -24,7 +24,9 @@ func NewSOSConditionService(conn *database.DB) *SOSConditionService { } } -func (service *SOSConditionService) InitConditions(ctx context.Context) (soscondition.ListView, *pnd.AppError) { +func (service *SOSConditionService) InitConditions( + ctx context.Context, +) (soscondition.ListView, *pnd.AppError) { tx, err := service.conn.BeginTx(ctx) if err != nil { return nil, err @@ -33,10 +35,11 @@ func (service *SOSConditionService) InitConditions(ctx context.Context) (soscond conditionList := make([]databasegen.SosCondition, len(soscondition.AvailableNames)) for idx, conditionName := range soscondition.AvailableNames { - created, err := databasegen.New(tx).CreateSOSCondition(ctx, databasegen.CreateSOSConditionParams{ - ID: datatype.NewUUIDV7(), - Name: utils.StrToNullStr(conditionName.String()), - }) + created, err := databasegen.New(tx). + CreateSOSCondition(ctx, databasegen.CreateSOSConditionParams{ + ID: datatype.NewUUIDV7(), + Name: utils.StrToNullStr(conditionName.String()), + }) if err != nil { return nil, pnd.FromPostgresError(err) } @@ -51,7 +54,9 @@ func (service *SOSConditionService) InitConditions(ctx context.Context) (soscond return soscondition.ToListView(conditionList), nil } -func (service *SOSConditionService) FindConditions(ctx context.Context) (soscondition.ListView, *pnd.AppError) { +func (service *SOSConditionService) FindConditions( + ctx context.Context, +) (soscondition.ListView, *pnd.AppError) { conditionList, err := databasegen.New(service.conn).FindConditions(ctx, false) if err != nil { return nil, pnd.FromPostgresError(err) diff --git a/internal/service/sos_post_service.go b/internal/service/sos_post_service.go index 0a350813..6b8f97d4 100644 --- a/internal/service/sos_post_service.go +++ b/internal/service/sos_post_service.go @@ -122,7 +122,10 @@ func (service *SOSPostService) createSOSPost( } func (service *SOSPostService) saveAllLinks( - ctx context.Context, q *databasegen.Queries, request *sospost.WriteSOSPostRequest, sosPostID uuid.UUID, + ctx context.Context, + q *databasegen.Queries, + request *sospost.WriteSOSPostRequest, + sosPostID uuid.UUID, ) *pnd.AppError { if err := service.SaveSOSDates(ctx, q, request.Dates, sosPostID); err != nil { return err @@ -193,14 +196,15 @@ func (service *SOSPostService) FindSOSPostsByAuthorID( return nil, err } - sosPosts, err2 := databasegen.New(tx).FindSOSPostsByAuthorID(ctx, databasegen.FindSOSPostsByAuthorIDParams{ - EarliestDateStartAt: utils.FormatDateString(time.Now().String()), - PetType: utils.StrToNullStr(filterType), - AuthorID: uuid.NullUUID{UUID: authorID, Valid: true}, - SortBy: utils.StrToNullStr(sortBy), - Limit: utils.IntToNullInt32(size + 1), - Offset: utils.IntToNullInt32((page - 1) * size), - }) + sosPosts, err2 := databasegen.New(tx). + FindSOSPostsByAuthorID(ctx, databasegen.FindSOSPostsByAuthorIDParams{ + EarliestDateStartAt: utils.FormatDateString(time.Now().String()), + PetType: utils.StrToNullStr(filterType), + AuthorID: uuid.NullUUID{UUID: authorID, Valid: true}, + SortBy: utils.StrToNullStr(sortBy), + Limit: utils.IntToNullInt32(size + 1), + Offset: utils.IntToNullInt32((page - 1) * size), + }) if err2 != nil { return nil, pnd.FromPostgresError(err2) } @@ -294,17 +298,19 @@ func (service *SOSPostService) UpdateSOSPost( return nil, err } - mediaData, err2 := databasegen.New(tx).FindResourceMedia(ctx, databasegen.FindResourceMediaParams{ - ResourceID: uuid.NullUUID{UUID: updateSOSPost.ID, Valid: true}, - ResourceType: utils.StrToNullStr(resourcemedia.SOSResourceType.String()), - }) + mediaData, err2 := databasegen.New(tx). + FindResourceMedia(ctx, databasegen.FindResourceMediaParams{ + ResourceID: uuid.NullUUID{UUID: updateSOSPost.ID, Valid: true}, + ResourceType: utils.StrToNullStr(resourcemedia.SOSResourceType.String()), + }) if err2 != nil { return nil, pnd.FromPostgresError(err2) } - conditionList, err2 := databasegen.New(tx).FindSOSPostConditions(ctx, databasegen.FindSOSPostConditionsParams{ - SosPostID: updateSOSPost.ID, - }) + conditionList, err2 := databasegen.New(tx). + FindSOSPostConditions(ctx, databasegen.FindSOSPostConditionsParams{ + SosPostID: updateSOSPost.ID, + }) if err2 != nil { return nil, pnd.FromPostgresError(err2) } @@ -333,7 +339,10 @@ func (service *SOSPostService) UpdateSOSPost( } func (service *SOSPostService) updateSOSPost( - ctx context.Context, q *databasegen.Queries, request *sospost.UpdateSOSPostRequest, thumbnailID uuid.NullUUID, + ctx context.Context, + q *databasegen.Queries, + request *sospost.UpdateSOSPostRequest, + thumbnailID uuid.NullUUID, ) (databasegen.UpdateSOSPostRow, *pnd.AppError) { params := databasegen.UpdateSOSPostParams{ ID: request.ID, @@ -403,7 +412,8 @@ func (service *SOSPostService) CheckUpdatePermission( return false, pnd.FromPostgresError(err2) } - sosPost, err2 := databasegen.New(tx).FindSOSPostByID(ctx, uuid.NullUUID{UUID: sosPostID, Valid: true}) + sosPost, err2 := databasegen.New(tx). + FindSOSPostByID(ctx, uuid.NullUUID{UUID: sosPostID, Valid: true}) if err2 != nil { return false, pnd.FromPostgresError(err2) } diff --git a/internal/service/tests/sos_post_service_test.go b/internal/service/tests/sos_post_service_test.go index a7b2c137..dc92b41d 100644 --- a/internal/service/tests/sos_post_service_test.go +++ b/internal/service/tests/sos_post_service_test.go @@ -60,19 +60,28 @@ func TestCreateSOSPost(t *testing.T) { // when sosPostImage, _ := mediaService.UploadMedia(ctx, nil, media.TypeImage, "sos_post_image.jpg") - sosPostImage2, _ := mediaService.UploadMedia(ctx, nil, media.TypeImage, "sos_post_image2.jpg") + sosPostImage2, _ := mediaService.UploadMedia( + ctx, + nil, + media.TypeImage, + "sos_post_image2.jpg", + ) sosPostData := tests.NewDummyWriteSOSPostRequest( []uuid.UUID{sosPostImage.ID, sosPostImage2.ID}, []uuid.UUID{addPets.Pets[0].ID}, 0, conditionIDs, ) - created, err := sosPostService.WriteSOSPost(ctx, owner.FirebaseUID, tests.NewDummyWriteSOSPostRequest( - []uuid.UUID{sosPostImage.ID, sosPostImage2.ID}, - []uuid.UUID{addPets.Pets[0].ID}, - 0, - conditionIDs, - )) + created, err := sosPostService.WriteSOSPost( + ctx, + owner.FirebaseUID, + tests.NewDummyWriteSOSPostRequest( + []uuid.UUID{sosPostImage.ID, sosPostImage2.ID}, + []uuid.UUID{addPets.Pets[0].ID}, + 0, + conditionIDs, + ), + ) if err != nil { t.Errorf("got %v want %v", err, nil) } @@ -103,9 +112,16 @@ func TestFindSOSPosts(t *testing.T) { // given profileImage, _ := mediaService.UploadMedia(ctx, nil, media.TypeImage, "profile_image.jpg") sosPostImage, _ := mediaService.UploadMedia(ctx, nil, media.TypeImage, "sos_post_image.jpg") - sosPostImage2, _ := mediaService.UploadMedia(ctx, nil, media.TypeImage, "sos_post_image2.jpg") + sosPostImage2, _ := mediaService.UploadMedia( + ctx, + nil, + media.TypeImage, + "sos_post_image2.jpg", + ) - userRequest := tests.NewDummyRegisterUserRequest(uuid.NullUUID{UUID: profileImage.ID, Valid: true}) + userRequest := tests.NewDummyRegisterUserRequest( + uuid.NullUUID{UUID: profileImage.ID, Valid: true}, + ) owner, _ := userService.RegisterUser(ctx, userRequest) addPets, _ := userService.AddPetsToOwner( ctx, @@ -167,9 +183,16 @@ func TestFindSOSPosts(t *testing.T) { // given profileImage, _ := mediaService.UploadMedia(ctx, nil, media.TypeImage, "profile_image.jpg") sosPostImage, _ := mediaService.UploadMedia(ctx, nil, media.TypeImage, "sos_post_image.jpg") - sosPostImage2, _ := mediaService.UploadMedia(ctx, nil, media.TypeImage, "sos_post_image2.jpg") + sosPostImage2, _ := mediaService.UploadMedia( + ctx, + nil, + media.TypeImage, + "sos_post_image2.jpg", + ) - userRequest := tests.NewDummyRegisterUserRequest(uuid.NullUUID{UUID: profileImage.ID, Valid: true}) + userRequest := tests.NewDummyRegisterUserRequest( + uuid.NullUUID{UUID: profileImage.ID, Valid: true}, + ) owner, _ := userService.RegisterUser(ctx, userRequest) uid := owner.FirebaseUID addPetRequest, _ := userService.AddPetsToOwner(ctx, uid, pet.AddPetsToOwnerRequest{ @@ -201,7 +224,12 @@ func TestFindSOSPosts(t *testing.T) { sosPostRequests := make([]sospost.WriteSOSPostRequest, 0) for i := 1; i < 4; i++ { - request := tests.NewDummyWriteSOSPostRequest(imageIDs, []uuid.UUID{addPetRequest.Pets[i-1].ID}, i, conditionIDs) + request := tests.NewDummyWriteSOSPostRequest( + imageIDs, + []uuid.UUID{addPetRequest.Pets[i-1].ID}, + i, + conditionIDs, + ) sosPostService.WriteSOSPost(ctx, uid, request) sosPostRequests = append(sosPostRequests, *request) } @@ -237,7 +265,12 @@ func TestFindSOSPosts(t *testing.T) { ) sosPostImage, _ := mediaService.UploadMedia(ctx, nil, media.TypeImage, "sos_post_image.jpg") - sosPostImage2, _ := mediaService.UploadMedia(ctx, nil, media.TypeImage, "sos_post_image2.jpg") + sosPostImage2, _ := mediaService.UploadMedia( + ctx, + nil, + media.TypeImage, + "sos_post_image2.jpg", + ) uid := owner.FirebaseUID petList, _ := userService.AddPetsToOwner(ctx, uid, pet.AddPetsToOwnerRequest{ Pets: []pet.AddPetRequest{ @@ -260,13 +293,23 @@ func TestFindSOSPosts(t *testing.T) { writeRequests := make([]sospost.WriteSOSPostRequest, 0) // 강아지인 경우 for i := 1; i < 3; i++ { - request := tests.NewDummyWriteSOSPostRequest(imageIDs, []uuid.UUID{petList.Pets[i-1].ID}, i, conditionIDs) + request := tests.NewDummyWriteSOSPostRequest( + imageIDs, + []uuid.UUID{petList.Pets[i-1].ID}, + i, + conditionIDs, + ) sosPostService.WriteSOSPost(ctx, uid, request) writeRequests = append(writeRequests, *request) } // 고양이인 경우 - request := tests.NewDummyWriteSOSPostRequest(imageIDs, []uuid.UUID{petList.Pets[2].ID}, 3, conditionIDs) + request := tests.NewDummyWriteSOSPostRequest( + imageIDs, + []uuid.UUID{petList.Pets[2].ID}, + 3, + conditionIDs, + ) sosPostService.WriteSOSPost(ctx, uid, request) writeRequests = append(writeRequests, *request) @@ -306,9 +349,16 @@ func TestFindSOSPosts(t *testing.T) { // given profileImage, _ := mediaService.UploadMedia(ctx, nil, media.TypeImage, "profile_image.jpg") sosPostImage, _ := mediaService.UploadMedia(ctx, nil, media.TypeImage, "sos_post_image.jpg") - sosPostImage2, _ := mediaService.UploadMedia(ctx, nil, media.TypeImage, "sos_post_image2.jpg") + sosPostImage2, _ := mediaService.UploadMedia( + ctx, + nil, + media.TypeImage, + "sos_post_image2.jpg", + ) - userRequest := tests.NewDummyRegisterUserRequest(uuid.NullUUID{UUID: profileImage.ID, Valid: true}) + userRequest := tests.NewDummyRegisterUserRequest( + uuid.NullUUID{UUID: profileImage.ID, Valid: true}, + ) owner, _ := userService.RegisterUser(ctx, userRequest) author := &user.WithoutPrivateInfo{ ID: owner.ID, @@ -332,7 +382,12 @@ func TestFindSOSPosts(t *testing.T) { writeRequests := make([]sospost.WriteSOSPostRequest, 0) for i := 1; i < 4; i++ { - request := tests.NewDummyWriteSOSPostRequest(imageIDs, []uuid.UUID{petList.Pets[0].ID}, i, conditionIDs) + request := tests.NewDummyWriteSOSPostRequest( + imageIDs, + []uuid.UUID{petList.Pets[0].ID}, + i, + conditionIDs, + ) sosPostService.WriteSOSPost(ctx, owner.FirebaseUID, request) writeRequests = append(writeRequests, *request) } @@ -365,9 +420,16 @@ func TestFindSOSPostByID(t *testing.T) { // given profileImage, _ := mediaService.UploadMedia(ctx, nil, media.TypeImage, "profile_image.jpg") sosPostImage, _ := mediaService.UploadMedia(ctx, nil, media.TypeImage, "sos_post_image.jpg") - sosPostImage2, _ := mediaService.UploadMedia(ctx, nil, media.TypeImage, "sos_post_image2.jpg") + sosPostImage2, _ := mediaService.UploadMedia( + ctx, + nil, + media.TypeImage, + "sos_post_image2.jpg", + ) - userRequest := tests.NewDummyRegisterUserRequest(uuid.NullUUID{UUID: profileImage.ID, Valid: true}) + userRequest := tests.NewDummyRegisterUserRequest( + uuid.NullUUID{UUID: profileImage.ID, Valid: true}, + ) owner, _ := userService.RegisterUser(ctx, userRequest) author := &user.WithoutPrivateInfo{ ID: owner.ID, @@ -390,7 +452,12 @@ func TestFindSOSPostByID(t *testing.T) { writeRequests := make([]sospost.WriteSOSPostRequest, 0) writtenIDs := make([]uuid.UUID, 0) for i := 1; i < 4; i++ { - request := tests.NewDummyWriteSOSPostRequest(imageIDs, []uuid.UUID{addPets.Pets[0].ID}, i, conditionIDs) + request := tests.NewDummyWriteSOSPostRequest( + imageIDs, + []uuid.UUID{addPets.Pets[0].ID}, + i, + conditionIDs, + ) sosPost, _ := sosPostService.WriteSOSPost(ctx, owner.FirebaseUID, request) writeRequests = append(writeRequests, *request) writtenIDs = append(writtenIDs, sosPost.ID) @@ -421,9 +488,16 @@ func TestUpdateSOSPost(t *testing.T) { // given profileImage, _ := mediaService.UploadMedia(ctx, nil, media.TypeImage, "profile_image.jpg") sosPostImage, _ := mediaService.UploadMedia(ctx, nil, media.TypeImage, "sos_post_image.jpg") - sosPostImage2, _ := mediaService.UploadMedia(ctx, nil, media.TypeImage, "sos_post_image2.jpg") + sosPostImage2, _ := mediaService.UploadMedia( + ctx, + nil, + media.TypeImage, + "sos_post_image2.jpg", + ) - userRequest := tests.NewDummyRegisterUserRequest(uuid.NullUUID{UUID: profileImage.ID, Valid: true}) + userRequest := tests.NewDummyRegisterUserRequest( + uuid.NullUUID{UUID: profileImage.ID, Valid: true}, + ) owner, _ := userService.RegisterUser(ctx, userRequest) addPets, _ := userService.AddPetsToOwner( ctx, @@ -441,8 +515,14 @@ func TestUpdateSOSPost(t *testing.T) { conditions, _ := service.NewSOSConditionService(db).FindConditions(ctx) conditionIDs := []uuid.UUID{conditions[0].ID, conditions[1].ID} sosPost, _ := sosPostService.WriteSOSPost( - ctx, owner.FirebaseUID, - tests.NewDummyWriteSOSPostRequest([]uuid.UUID{sosPostImage.ID}, []uuid.UUID{addPets.Pets[0].ID}, 1, conditionIDs), + ctx, + owner.FirebaseUID, + tests.NewDummyWriteSOSPostRequest( + []uuid.UUID{sosPostImage.ID}, + []uuid.UUID{addPets.Pets[0].ID}, + 1, + conditionIDs, + ), ) // when @@ -496,7 +576,11 @@ func assertPetEquals(t *testing.T, want, got pet.DetailView) { assert.Equal(t, want.ProfileImageURL, got.ProfileImageURL) } -func writtenAndFoundSOSPostEquals(t *testing.T, want sospost.WriteSOSPostRequest, got sospost.FindSOSPostView) { +func writtenAndFoundSOSPostEquals( + t *testing.T, + want sospost.WriteSOSPostRequest, + got sospost.FindSOSPostView, +) { t.Helper() assert.Equal(t, want.Title, got.Title) diff --git a/internal/service/tests/user_service_test.go b/internal/service/tests/user_service_test.go index 75058a3a..993b1f2a 100644 --- a/internal/service/tests/user_service_test.go +++ b/internal/service/tests/user_service_test.go @@ -31,7 +31,9 @@ func TestRegisterUser(t *testing.T) { // Given profileImage, _ := mediaService.UploadMedia(ctx, nil, media.TypeImage, "profile_image.jpg") - userRequest := tests.NewDummyRegisterUserRequest(uuid.NullUUID{UUID: profileImage.ID, Valid: true}) + userRequest := tests.NewDummyRegisterUserRequest( + uuid.NullUUID{UUID: profileImage.ID, Valid: true}, + ) // When created, _ := userService.RegisterUser(ctx, userRequest) @@ -72,7 +74,9 @@ func TestRegisterUser(t *testing.T) { // Given profileImage, _ := mediaService.UploadMedia(ctx, nil, media.TypeImage, "profile_image.jpg") - userRequest := tests.NewDummyRegisterUserRequest(uuid.NullUUID{UUID: profileImage.ID, Valid: true}) + userRequest := tests.NewDummyRegisterUserRequest( + uuid.NullUUID{UUID: profileImage.ID, Valid: true}, + ) userService.RegisterUser(ctx, userRequest) // When @@ -117,7 +121,10 @@ func TestFindUsers(t *testing.T) { } // When - found, _ := userService.FindUsers(ctx, user.FindUsersParams{Page: 1, Size: 20, Nickname: &targetNickname}) + found, _ := userService.FindUsers( + ctx, + user.FindUsersParams{Page: 1, Size: 20, Nickname: &targetNickname}, + ) // Then assert.Equal(t, 1, len(found.Items)) @@ -135,7 +142,9 @@ func TestFindUser(t *testing.T) { // Given profileImage, _ := mediaService.UploadMedia(ctx, nil, media.TypeImage, "profile_image.jpg") - userRequest := tests.NewDummyRegisterUserRequest(uuid.NullUUID{UUID: profileImage.ID, Valid: true}) + userRequest := tests.NewDummyRegisterUserRequest( + uuid.NullUUID{UUID: profileImage.ID, Valid: true}, + ) created, _ := userService.RegisterUser(ctx, userRequest) // When @@ -155,7 +164,9 @@ func TestFindUser(t *testing.T) { // Given profileImage, _ := mediaService.UploadMedia(ctx, nil, media.TypeImage, "profile_image.jpg") - userRequest := tests.NewDummyRegisterUserRequest(uuid.NullUUID{UUID: profileImage.ID, Valid: true}) + userRequest := tests.NewDummyRegisterUserRequest( + uuid.NullUUID{UUID: profileImage.ID, Valid: true}, + ) created, _ := userService.RegisterUser(ctx, userRequest) // When @@ -191,11 +202,16 @@ func TestFindUserProfile(t *testing.T) { // Given profileImage, _ := mediaService.UploadMedia(ctx, nil, media.TypeImage, "profile_image.jpg") - userRequest := tests.NewDummyRegisterUserRequest(uuid.NullUUID{UUID: profileImage.ID, Valid: true}) + userRequest := tests.NewDummyRegisterUserRequest( + uuid.NullUUID{UUID: profileImage.ID, Valid: true}, + ) created, _ := userService.RegisterUser(ctx, userRequest) // When - found, _ := userService.FindUserProfile(ctx, user.FindUserParams{FbUID: &created.FirebaseUID}) + found, _ := userService.FindUserProfile( + ctx, + user.FindUserParams{FbUID: &created.FirebaseUID}, + ) // Then assert.Equal(t, created.ID, found.ID) @@ -227,7 +243,9 @@ func TestExistsByEmail(t *testing.T) { // Given profileImage, _ := mediaService.UploadMedia(ctx, nil, media.TypeImage, "profile_image.jpg") - userRequest := tests.NewDummyRegisterUserRequest(uuid.NullUUID{UUID: profileImage.ID, Valid: true}) + userRequest := tests.NewDummyRegisterUserRequest( + uuid.NullUUID{UUID: profileImage.ID, Valid: true}, + ) userService.RegisterUser(ctx, userRequest) // When @@ -255,7 +273,12 @@ func TestUpdateUserByUID(t *testing.T) { // When updatedNickname := "updated" - updatedProfileImage, _ := mediaService.UploadMedia(ctx, nil, media.TypeImage, "updated_profile_image.jpg") + updatedProfileImage, _ := mediaService.UploadMedia( + ctx, + nil, + media.TypeImage, + "updated_profile_image.jpg", + ) userService.UpdateUserByUID( ctx, targetUser.FirebaseUID, @@ -285,7 +308,12 @@ func TestAddPetsToOwner(t *testing.T) { tests.NewDummyRegisterUserRequest(uuid.NullUUID{UUID: profileImage.ID, Valid: true}), ) - petProfileImage, _ := mediaService.UploadMedia(ctx, nil, media.TypeImage, "pet_profile_image.jpg") + petProfileImage, _ := mediaService.UploadMedia( + ctx, + nil, + media.TypeImage, + "pet_profile_image.jpg", + ) petsToAdd := pet.AddPetsToOwnerRequest{ Pets: []pet.AddPetRequest{ *tests.NewDummyAddPetRequest( @@ -335,18 +363,31 @@ func TestUpdatePet(t *testing.T) { tests.NewDummyRegisterUserRequest(uuid.NullUUID{UUID: profileImage.ID, Valid: true}), ) - petProfileImage, _ := mediaService.UploadMedia(ctx, nil, media.TypeImage, "pet_profile_image.jpg") + petProfileImage, _ := mediaService.UploadMedia( + ctx, + nil, + media.TypeImage, + "pet_profile_image.jpg", + ) petRequest := tests.NewDummyAddPetRequest( uuid.NullUUID{UUID: petProfileImage.ID, Valid: true}, commonvo.PetTypeDog, pet.GenderMale, "poodle", ) createdPets, _ := userService.AddPetsToOwner( - ctx, registeredUser.FirebaseUID, pet.AddPetsToOwnerRequest{Pets: []pet.AddPetRequest{*petRequest}}) + ctx, + registeredUser.FirebaseUID, + pet.AddPetsToOwnerRequest{Pets: []pet.AddPetRequest{*petRequest}}, + ) createdPet := createdPets.Pets[0] // When - updatedPetProfileImage, _ := mediaService.UploadMedia(ctx, nil, media.TypeImage, "updated_pet_profile_image.jpg") + updatedPetProfileImage, _ := mediaService.UploadMedia( + ctx, + nil, + media.TypeImage, + "updated_pet_profile_image.jpg", + ) birthDate, _ := datatype.ParseDate("2021-01-01") updatedPetRequest := pet.UpdatePetRequest{ Name: "updated", @@ -358,7 +399,12 @@ func TestUpdatePet(t *testing.T) { ProfileImageID: uuid.NullUUID{UUID: updatedPetProfileImage.ID, Valid: true}, } - _, err := userService.UpdatePet(ctx, registeredUser.FirebaseUID, createdPet.ID, updatedPetRequest) + _, err := userService.UpdatePet( + ctx, + registeredUser.FirebaseUID, + createdPet.ID, + updatedPetRequest, + ) if err != nil { t.Errorf("got %v want %v", err, nil) } @@ -395,7 +441,12 @@ func TestDeletePet(t *testing.T) { tests.NewDummyRegisterUserRequest(uuid.NullUUID{UUID: profileImage.ID, Valid: true}), ) - petProfileImage, _ := mediaService.UploadMedia(ctx, nil, media.TypeImage, "pet_profile_image.jpg") + petProfileImage, _ := mediaService.UploadMedia( + ctx, + nil, + media.TypeImage, + "pet_profile_image.jpg", + ) petRequest := tests.NewDummyAddPetRequest( uuid.NullUUID{UUID: petProfileImage.ID, Valid: true}, commonvo.PetTypeDog, diff --git a/internal/service/user_service.go b/internal/service/user_service.go index c87cb263..eda42f6e 100644 --- a/internal/service/user_service.go +++ b/internal/service/user_service.go @@ -44,7 +44,9 @@ func (service *UserService) RegisterUser( return nil, err } - _, err2 := databasegen.New(service.conn).WithTx(tx.Tx).CreateUser(ctx, registerUserRequest.ToDBParams()) + _, err2 := databasegen.New(service.conn). + WithTx(tx.Tx). + CreateUser(ctx, registerUserRequest.ToDBParams()) if err2 != nil { return nil, pnd.FromPostgresError(err2) } @@ -103,7 +105,10 @@ func (service *UserService) FindUserProfile( return user.NewProfileView(row, pets), nil } -func (service *UserService) ExistsByNickname(ctx context.Context, nickname string) (bool, *pnd.AppError) { +func (service *UserService) ExistsByNickname( + ctx context.Context, + nickname string, +) (bool, *pnd.AppError) { existsByNickname, err := databasegen.New(service.conn).ExistsUserByNickname(ctx, nickname) if err != nil { return existsByNickname, pnd.FromPostgresError(err) @@ -121,11 +126,13 @@ func (service *UserService) UpdateUserByUID( return nil, err } - _, err2 := databasegen.New(service.conn).WithTx(tx.Tx).UpdateUserByFbUID(ctx, databasegen.UpdateUserByFbUIDParams{ - Nickname: nickname, - ProfileImageID: profileImageID, - FbUid: utils.StrToNullStr(uid), - }) + _, err2 := databasegen.New(service.conn). + WithTx(tx.Tx). + UpdateUserByFbUID(ctx, databasegen.UpdateUserByFbUIDParams{ + Nickname: nickname, + ProfileImageID: profileImageID, + FbUid: utils.StrToNullStr(uid), + }) if err2 != nil { return nil, pnd.FromPostgresError(err2) } @@ -169,7 +176,10 @@ func (service *UserService) FindPet( return pet.ToWithProfileImage(row), nil } -func (service *UserService) FindPets(ctx context.Context, params pet.FindPetsParams) (*pet.ListView, *pnd.AppError) { +func (service *UserService) FindPets( + ctx context.Context, + params pet.FindPetsParams, +) (*pet.ListView, *pnd.AppError) { rows, err := databasegen.New(service.conn).FindPets(ctx, params.ToDBParams()) if err != nil { return nil, pnd.FromPostgresError(err) @@ -199,7 +209,9 @@ func (service *UserService) AddPetsToOwner( for _, item := range addPetsRequest.Pets { if item.ProfileImageID.Valid { if _, err := service.mediaService.FindMediaByID(ctx, item.ProfileImageID.UUID); err != nil { - return nil, pnd.ErrInvalidBody(fmt.Errorf("존재하지 않는 프로필 이미지 ID입니다. ID: %s", item.ProfileImageID.UUID)) + return nil, pnd.ErrInvalidBody( + fmt.Errorf("존재하지 않는 프로필 이미지 ID입니다. ID: %s", item.ProfileImageID.UUID), + ) } } } @@ -310,13 +322,20 @@ func (service *UserService) UpdatePet( return updatedPet.ToDetailView(), nil } -func (service *UserService) DeletePet(ctx context.Context, uid string, petID uuid.UUID) *pnd.AppError { +func (service *UserService) DeletePet( + ctx context.Context, + uid string, + petID uuid.UUID, +) *pnd.AppError { owner, err := service.FindUser(ctx, user.FindUserParams{FbUID: &uid}) if err != nil { return err } - petToDelete, err := service.FindPet(ctx, pet.FindPetParams{ID: uuid.NullUUID{UUID: petID, Valid: true}}) + petToDelete, err := service.FindPet( + ctx, + pet.FindPetParams{ID: uuid.NullUUID{UUID: petID, Valid: true}}, + ) if err != nil { return err } diff --git a/internal/tests/factories.go b/internal/tests/factories.go index 86f68f5b..f1d963b5 100644 --- a/internal/tests/factories.go +++ b/internal/tests/factories.go @@ -53,8 +53,14 @@ func NewDummyWriteSOSPostRequest( ImageIDs: imageID, Reward: "Reward", Dates: []sospost.SOSDateView{ - {DateStartAt: fmt.Sprintf("2024-04-1%d", sosPostCnt), DateEndAt: fmt.Sprintf("2024-04-2%d", sosPostCnt)}, - {DateStartAt: fmt.Sprintf("2024-05-1%d", sosPostCnt), DateEndAt: fmt.Sprintf("2024-05-2%d", sosPostCnt)}, + { + DateStartAt: fmt.Sprintf("2024-04-1%d", sosPostCnt), + DateEndAt: fmt.Sprintf("2024-04-2%d", sosPostCnt), + }, + { + DateStartAt: fmt.Sprintf("2024-05-1%d", sosPostCnt), + DateEndAt: fmt.Sprintf("2024-05-2%d", sosPostCnt), + }, }, CareType: sospost.CareTypeFoster, CarerGender: sospost.CarerGenderMale, diff --git a/internal/tests/service.go b/internal/tests/service.go index f3c92f76..8a792562 100644 --- a/internal/tests/service.go +++ b/internal/tests/service.go @@ -20,7 +20,10 @@ import ( type StubUploader struct{} -func (u StubUploader) UploadFile(_ io.ReadSeeker, fileName string) (url string, appError *pnd.AppError) { +func (u StubUploader) UploadFile( + _ io.ReadSeeker, + fileName string, +) (url string, appError *pnd.AppError) { return "https://example.com/files/" + fileName, nil } @@ -57,7 +60,9 @@ func AddDummyPet( ) *pet.DetailView { t.Helper() petList, err := userService.AddPetsToOwner(ctx, ownerUID, pet.AddPetsToOwnerRequest{ - Pets: []pet.AddPetRequest{*NewDummyAddPetRequest(profileImageID, commonvo.PetTypeDog, pet.GenderMale, "poodle")}, + Pets: []pet.AddPetRequest{ + *NewDummyAddPetRequest(profileImageID, commonvo.PetTypeDog, pet.GenderMale, "poodle"), + }, }) if err != nil { t.Errorf("got %v want %v", err, nil) diff --git a/internal/wschat/server.go b/internal/wschat/server.go index 750d1238..a8433052 100644 --- a/internal/wschat/server.go +++ b/internal/wschat/server.go @@ -56,7 +56,10 @@ func (s *WSServer) HandleConnections( ) error { log.Info().Msg("Handling connections") - foundUser, err2 := s.authService.VerifyAuthAndGetUser(c.Request().Context(), c.Request().Header.Get("Authorization")) + foundUser, err2 := s.authService.VerifyAuthAndGetUser( + c.Request().Context(), + c.Request().Header.Get("Authorization"), + ) if err2 != nil { return c.JSON(err2.StatusCode, err2) } @@ -87,7 +90,10 @@ func (s *WSServer) HandleConnections( log.Error().Err(err).Msg("Failed to read message") delete(s.clients, userID) - return c.JSON(http.StatusInternalServerError, map[string]interface{}{"error": err.Error()}) + return c.JSON( + http.StatusInternalServerError, + map[string]interface{}{"error": err.Error()}, + ) } s.broadcast <- msgReq @@ -115,11 +121,23 @@ func (s *WSServer) LoopOverClientMessages() { var msg MessageResponse switch msgReq.MessageType { case "plain": - msg = NewPlainMessageResponse(msgReq.MessageID, msgReq.Sender, msgReq.Room, msgReq.Message, time.Now()) + msg = NewPlainMessageResponse( + msgReq.MessageID, + msgReq.Sender, + msgReq.Room, + msgReq.Message, + time.Now(), + ) case "media": if len(msgReq.Medias) == 0 { log.Error().Msg("No media found") - msg = NewErrorMessageResponse(msgReq.MessageID, msgReq.Sender, msgReq.Room, "No media found", time.Now()) + msg = NewErrorMessageResponse( + msgReq.MessageID, + msgReq.Sender, + msgReq.Room, + "No media found", + time.Now(), + ) } else { ids := make([]uuid.UUID, 0) for _, mediaReq := range msgReq.Medias {