꿈틀꿈틀 개발일기

Dummy data 생성하기

by jeongminy

1. 의존성 추가

	implementation("net.datafaker:datafaker:2.0.2")

 

2. controller 생성

@Tag(name = "dummy", description = "더미")
@RequestMapping("/dummy")
@RestController
class DummyController(
    private val dummyService: DummyService
) {
    @Operation(summary = "상품 더미 생성")
    @PostMapping("/items")
    fun generateDummyPosts(
        @RequestParam count: Int
    ): ResponseEntity<String> {
        dummyService.addDummyItems(count)
        return ResponseEntity.status(HttpStatus.CREATED).body("${count} Dummy items added successfully.")
    }
}

 

3. service 생성

interface DummyService {
    fun addDummyItems(count:Int)
}

 

4. serviceImpl 생성 (구현부)

@Service
class DummyServiceImpl(
    private val itemRepository: ItemRepository
): DummyService {

    override fun addDummyItems(count: Int) {
        val faker = Faker()
        repeat(count) {
            val clothingTypes  = mapOf(
                ItemTag.TOP to listOf("shirts", "jacket", "sweater", "blouse", "hoodie", "vest", "t-shirt"),
                ItemTag.BOTTOM to listOf("jeans", "shorts", "skirt", "pants", "sweatpants"),
                ItemTag.OUTER to listOf("jacket", "sweater", "coat", "vest", "hoodie"),
                ItemTag.SHOES to listOf("shoes", "sneakers", "boots", "sandals"),
                ItemTag.BAGS to listOf("bag", "backpack", "tote", "clutch"),
                ItemTag.BEAUTY to listOf("bracelet", "necklace", "earrings", "ring", "hat", "scarf"),
                ItemTag.GLASSES to listOf("glasses", "sunglasses", "vintage glasses", "sport glasses")
            )
            val colors = listOf(
                "black", "white", "red", "blue", "green", "yellow",
                "orange", "pink", "purple", "brown", "gray", "beige"
            )
            val tag = ItemTag.entries.filterNot { it == ItemTag.ALL }.random()
            val itemType = clothingTypes [tag]?.random()
            val itemName = "${colors.random()}_$itemType"+"_${(100..999).random()}"
            val stock = (0..1000).random().toLong()
            val item = ItemEntity(
                itemName = itemName,
                price = (10..100).random() * 1000L,
                description = "해당 상품을 설명합니다",
                stock = stock,
                canPurchase = stock > 0,
                sales = faker.number().randomNumber(2, true),
                itemTag = tag,
                isDeleted = false
            )
            //상품 저장
            itemRepository.save(item)
        }
    }
}

 

5. swagger 테스트 

5만건의 데이터가 만들어지기까지 정확히 1시간 8분 걸렸다 ........

 

6. supabase DB 확인

 

5만건 이상의 dummy data 생성 완료!!❤️

'📖 Study' 카테고리의 다른 글

OAuth 이해하기  (0) 2024.03.05
Redis 와 Memcached  (0) 2024.02.19
AWS | S3 를 이용한 파일 업로드 기능 with Kotlin, swagger  (2) 2024.01.26

블로그의 정보

꿈틀꿈틀 개발일기

jeongminy

활동하기