Open3

Quarkus, Graphql

snicmakinosnicmakino

プロジェクト作成
とりあえず最初はkotlin, graphql, gradle-kotlinあたりで開始

quarkus create app myproject --extension='kotlin,quarkus-smallrye-graphql'  --gradle-kotlin-dsl
snicmakinosnicmakino

色々進捗があるんだけど、試行錯誤しすぎてスクラップに書きづらい。。

後で追加するスクラップ用メモ

  • GradleじゃなくてMaven
    • Quarkus、Kotlin、マルチモジュールの相性悪い
  • マルチモジュール構成のコツ
    • quarkus-maven-pluginは起動用プロジェクトにのみ記載
      • 全部Quarkusプロジェクトになって大変
    • そのままだとDIできないので、各プロジェクトにjandex-maven-pluginを追加
    • 開発環境の起動方法
      • mvn install clean
        • これやらないと読み込めないとかで起動できない
      • mvn quarkus:dev -pl app
  • OIDC設定
  • Hibernate Panache設定
snicmakinosnicmakino

DBのカラム名をEntityのプロパティをスネークケースに変換したものを設定するように変更

application.properties

quarkus.hibernate-orm.physical-naming-strategy=org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy

Entity

import io.quarkus.hibernate.orm.panache.kotlin.PanacheCompanion
import io.quarkus.hibernate.orm.panache.kotlin.PanacheEntity
import jakarta.persistence.Entity
import jakarta.persistence.Table
import java.time.LocalDateTime

@Entity
@Table(name = "users")
class UsersEntity : PanacheEntity() {
    companion object : PanacheCompanion<UsersEntity>

    lateinit var username: String

    lateinit var email: String

    // @Column(name = "first_name")  ← これが不要になる
    lateinit var firstName: String

    // @Column(name = "last_name") ← これが不要になる
    lateinit var lastName: String

    lateinit var createdAt: LocalDateTime

    lateinit var updatedAt: LocalDateTime
}