Skip to content

Commit 576f4b6

Browse files
authored
Merge pull request #21 from Nexters/dev
Dev
2 parents d2d919b + a64e5d8 commit 576f4b6

25 files changed

+558
-52
lines changed

build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ dependencies {
3333
annotationProcessor 'org.projectlombok:lombok'
3434
testImplementation 'org.springframework.boot:spring-boot-starter-test'
3535
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
36+
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.8.4'
3637
}
3738

3839
tasks.named('test') {

src/main/java/donmani/donmani_server/DonmaniController.java

Lines changed: 0 additions & 16 deletions
This file was deleted.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package donmani.donmani_server.common.config;
2+
3+
import org.springframework.context.annotation.Bean;
4+
5+
import io.swagger.v3.oas.models.Components;
6+
import io.swagger.v3.oas.models.OpenAPI;
7+
import io.swagger.v3.oas.models.info.Info;
8+
9+
public class OpenAPIConfig {
10+
/**
11+
* OpenAPI bean 구성
12+
* @return
13+
*/
14+
@Bean
15+
public OpenAPI openAPI() {
16+
Info info = new Info()
17+
.title("swagger 테스트")
18+
.version("1.0")
19+
.description("API에 대한 설명 부분");
20+
return new OpenAPI()
21+
.components(new Components())
22+
.info(info);
23+
}
24+
}

src/main/java/donmani/donmani_server/common/log/LogController.java

Lines changed: 0 additions & 24 deletions
This file was deleted.
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// Use DBML to define your database structure
2+
// Docs: https://dbml.dbdiagram.io/docs
3+
4+
Table Expense {
5+
id bigint [primary key]
6+
user_id bigint
7+
created_at timestamp
8+
category category_type
9+
flag flag_type
10+
memo string
11+
}
12+
13+
Table User {
14+
id bigint [primary key]
15+
user_key string
16+
name string
17+
level int
18+
}
19+
20+
Enum category_type {
21+
created
22+
running
23+
done
24+
failure
25+
}
26+
27+
Enum flag_type {
28+
GOOD
29+
BAD
30+
NO
31+
}
32+
33+
Ref: Expense.user_id > User.id // many-to-one
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package donmani.donmani_server.expense.controller;
2+
3+
import org.springframework.http.ResponseEntity;
4+
import org.springframework.web.bind.annotation.GetMapping;
5+
import org.springframework.web.bind.annotation.PathVariable;
6+
import org.springframework.web.bind.annotation.PostMapping;
7+
import org.springframework.web.bind.annotation.RequestBody;
8+
import org.springframework.web.bind.annotation.RequestMapping;
9+
import org.springframework.web.bind.annotation.RequestParam;
10+
import org.springframework.web.bind.annotation.RestController;
11+
12+
import donmani.donmani_server.expense.dto.ExpenseRequestDTO;
13+
import donmani.donmani_server.expense.dto.ExpenseResponseDTO;
14+
import donmani.donmani_server.expense.service.ExpenseService;
15+
import lombok.RequiredArgsConstructor;
16+
17+
@RestController
18+
@RequestMapping("/expenses")
19+
@RequiredArgsConstructor
20+
public class ExpenseController {
21+
private final ExpenseService expenseService;
22+
23+
@GetMapping("/{userKey}")
24+
public ResponseEntity<ExpenseResponseDTO> getExpenses(
25+
@PathVariable String userKey,
26+
@RequestParam int year,
27+
@RequestParam int month) {
28+
ExpenseResponseDTO response = expenseService.getExpenses(userKey, year, month);
29+
return ResponseEntity.ok(response);
30+
}
31+
32+
@PostMapping
33+
public ResponseEntity<Void> addExpense(@RequestBody ExpenseRequestDTO request) {
34+
expenseService.addExpense(request);
35+
return ResponseEntity.ok().build();
36+
}
37+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package donmani.donmani_server.expense.dto;
2+
3+
import com.fasterxml.jackson.annotation.JsonInclude;
4+
5+
import donmani.donmani_server.expense.entity.CategoryType;
6+
import donmani.donmani_server.expense.entity.FlagType;
7+
8+
import lombok.AllArgsConstructor;
9+
import lombok.Builder;
10+
import lombok.Getter;
11+
import lombok.NoArgsConstructor;
12+
import lombok.Setter;
13+
14+
@Getter
15+
@Setter
16+
@NoArgsConstructor
17+
@AllArgsConstructor
18+
@Builder
19+
@JsonInclude(JsonInclude.Include.NON_NULL) // null 값 제외
20+
public class ContentDTO {
21+
private FlagType flag;
22+
private CategoryType category;
23+
private String memo;
24+
}
25+
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package donmani.donmani_server.expense.dto;
2+
3+
import java.util.List;
4+
5+
import jakarta.validation.constraints.NotBlank;
6+
import jakarta.validation.constraints.NotEmpty;
7+
import lombok.AllArgsConstructor;
8+
import lombok.Builder;
9+
import lombok.Getter;
10+
import lombok.NoArgsConstructor;
11+
import lombok.Setter;
12+
13+
@Getter
14+
@Setter
15+
@NoArgsConstructor
16+
@AllArgsConstructor
17+
@Builder
18+
public class ExpenseRequestDTO {
19+
@NotBlank(message = "Device ID가 존재하지 않습니다.")
20+
private String userKey;
21+
22+
@NotEmpty(message = "소비 기록이 입력되지 않았습니다.")
23+
private List<RecordDTO> records;
24+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package donmani.donmani_server.expense.dto;
2+
3+
import java.util.List;
4+
5+
import lombok.AllArgsConstructor;
6+
import lombok.Builder;
7+
import lombok.Getter;
8+
import lombok.NoArgsConstructor;
9+
import lombok.Setter;
10+
11+
@Getter
12+
@Setter
13+
@NoArgsConstructor
14+
@AllArgsConstructor
15+
@Builder
16+
public class ExpenseResponseDTO {
17+
private String userKey;
18+
private List<RecordDTO> records;
19+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package donmani.donmani_server.expense.dto;
2+
3+
import java.time.LocalDate;
4+
import java.util.List;
5+
6+
import com.fasterxml.jackson.annotation.JsonInclude;
7+
8+
import lombok.AllArgsConstructor;
9+
import lombok.Builder;
10+
import lombok.Getter;
11+
import lombok.NoArgsConstructor;
12+
import lombok.Setter;
13+
14+
@Getter
15+
@Setter
16+
@NoArgsConstructor
17+
@AllArgsConstructor
18+
@Builder
19+
@JsonInclude(JsonInclude.Include.NON_NULL) // null 값 제외
20+
public class RecordDTO {
21+
private LocalDate date;
22+
private List<ContentDTO> contents; // null 가능
23+
}

0 commit comments

Comments
 (0)