sqldelight

Kim suho·2022년 3월 12일
0

https://cashapp.github.io/sqldelight/

multiplatform용 database는 현재 sqldelight가 유일한 솔루션으로 보인다.
각 플랫폼마다 작성해서 commonMain에서 expect class로 묶는게 아니라면..

1.5.3버전의 Guide page에는 밑의 database("MyDb") 대신 Database 로 나왔는데, database("dbname")으로 해야 되더라.

common/src/commonMain/sqldelight/my/company/data/dbname

sqldelight {
    database("MyDb") {
        packageName = "my.company"
        sourceFolders = listOf("sqldelight")
    }
    linkSqlite = true
}

주의할 것은 sqldelight가 sql 구문을 kotlin class로 자동 생성하는데 sourceFolders 에 정의된 폴더를 root로하는 하위 폴더 어딘가에 db파일이 있어야 한다.
예시로 위와 같이 sqldelight로 지정하면, commonMain이 프로젝트 root디렉토리이므로 common/src/commonMain/sqldelight 의 하위 디렉토리들에서 sql 파일을 찾아서 kotlin class로 변환한다.
packageName은 이 변환한 class의 packagae name을 정하기 위해서 사용한다.
위의 MyDb 이름으로 kotlin class name이 생성되며 file 이름이나 table이름과 같게 만들 필요는 없다.

참고로 jvmMain sqldelight의 예시는 memory에 넣는 것으로 나왔는데,
아래처럼 파일에 기록할 수도 있다.
val driver: SqlDriver = JdbcSqliteDriver("jdbc:sqlite:{yourPath}/console.db")

profile
평범한 개발자

0개의 댓글