## application.properties ##

# server
server.port=8080
spring.mvc.cors.allowed-origins=http://localhost:3000

# file logger
logging.level.kr.co.a1mediagroup=DEBUG
logging.file.name=logs/on-api.log
logging.logback.rollingpolicy.file-name-pattern=${LOG_FILE}.%d{yyyy-MM-dd}_%i
logging.logback.rollingpolicy.max-history=30
logging.logback.rollingpolicy.max-file-size=500MB

# spring
spring.mvc.problemdetails.enabled=true
spring.pid.fail-on-write-error=true
spring.pid.file=OnOffApi.pid

# jpa
spring.jpa.generate-ddl=false
spring.jpa.open-in-view=false
spring.jpa.properties.hibernate.default_batch_fetch_size=20
spring.jpa.properties.hibernate.ddl-auto=none

# jpa db log
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.orm.jdbc.bind=TRACE
logging.level.org.springframework.orm.jpa.JpaTransactionManager=DEBUG
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.use_sql_comments=false

# db
spring.datasource.url=jdbc:mysql://localhost:3306/[db]
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=[username]
spring.datasource.password=[password]
spring.datasource.hikari.maximum-pool-size=50
spring.datasource.hikari.minimum-idle=15
spring.datasource.hikari.connection-timeout=300000
## build.gradle ##

plugins {
    id 'java'
    id 'idea'
    id 'eclipse'
    id 'application'
    id 'org.springframework.boot' version '3.1.5'
    id 'io.spring.dependency-management' version '1.1.3'
}

group = 'kr.co.onmediagroup'
version = '1.0-SNAPSHOT'

java {
    sourceCompatibility = '17'
}

configurations {
    developmentOnly
    runtimeClasspath {
        extendsFrom developmentOnly
    }

    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'

    testImplementation 'org.springframework.boot:spring-boot-starter-test'

    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    annotationProcessor 'org.projectlombok:lombok'
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'com.mysql:mysql-connector-j'
    
    // JPA 관련 인터페이스 (예: @Entity, @Table, @Id) 제공
    // <https://mvnrepository.com/artifact/jakarta.persistence/jakarta.persistence-api>
    implementation group: 'jakarta.persistence', name: 'jakarta.persistence-api', version: '3.1.0'

		// @PostConstruct, @PreDestroy, @Resource 등 Java 표준 어노테이션 제공
    // <https://mvnrepository.com/artifact/jakarta.annotation/jakarta.annotation-api>
    implementation group: 'jakarta.annotation', name: 'jakarta.annotation-api', version: '2.1.1'

    // @NotBlank, @Size, @Email 등 Bean Validation (JSR 380) 제공
    // <https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator>
    implementation group: 'org.hibernate.validator', name: 'hibernate-validator', version: '8.0.1.Final'
}

test {
    useJUnitPlatform()
}
@SpringBootApplication
public class ProjectApplication {

  public static void main(String[] args) {
    SpringApplication springApplication = new SpringApplication(OnOffApiApplication.class);
    springApplication.addListeners(new ApplicationPidFileWriter());
    springApplication.run(args);
  }
}