diff --git a/src/main/kotlin/dev/hossain/postgresqldelight/Main.kt b/src/main/kotlin/dev/hossain/postgresqldelight/Main.kt index 6c32767..f514185 100644 --- a/src/main/kotlin/dev/hossain/postgresqldelight/Main.kt +++ b/src/main/kotlin/dev/hossain/postgresqldelight/Main.kt @@ -16,6 +16,12 @@ fun main(args: Array) { val playerQueries: PlayerQueries = sportsRepository.getPlayerQueries(appConfig) testDriveDatabase(playerQueries, faker { }) + + val journal = sportsRepository.getJournal(appConfig) + println(journal.selectAll().executeAsList()) + + journal.insert("{ \"customer\": \"Alex Cross\", \"items\": {\"product\": \"Tea\",\"qty\": 6}}") + journal.insert("{ \"customer\": \"Barney Stinson\", \"items\": {\"product\": \"chocoloate\",\"qty\": 24}}") } diff --git a/src/main/kotlin/dev/hossain/postgresqldelight/SportsRepository.kt b/src/main/kotlin/dev/hossain/postgresqldelight/SportsRepository.kt index 3f8ad35..133ffcc 100644 --- a/src/main/kotlin/dev/hossain/postgresqldelight/SportsRepository.kt +++ b/src/main/kotlin/dev/hossain/postgresqldelight/SportsRepository.kt @@ -26,6 +26,17 @@ class SportsRepository constructor( return playerQueries } + fun getJournal(appConfig: AppConfig): JournalQueries { + val dataSource: DataSource = getDataSource(appConfig) + + val driver: SqlDriver = dataSource.asJdbcDriver() + + execSchema(driver) + + val database = SportsDatabase(driver) + return database.journalQueries + } + /** * @param driver the [SqlDriver] required to create the database. */ @@ -36,7 +47,8 @@ class SportsRepository constructor( private fun getDataSource(appConfig: AppConfig): DataSource { val hikariConfig = HikariConfig() // https://jdbc.postgresql.org/documentation/use/ - hikariConfig.setJdbcUrl("jdbc:postgresql://${appConfig.dbHost}/${appConfig.dbName}") + // https://stackoverflow.com/questions/65478350/error-column-is-of-type-json-but-expression-is-of-type-character-varying-in-hib + hikariConfig.setJdbcUrl("jdbc:postgresql://${appConfig.dbHost}/${appConfig.dbName}?stringtype=unspecified") hikariConfig.driverClassName = "org.postgresql.Driver" hikariConfig.username = appConfig.dbUsername hikariConfig.password = appConfig.dbPassword diff --git a/src/main/sqldelight/dev/hossain/postgresqldelight/Journal.sq b/src/main/sqldelight/dev/hossain/postgresqldelight/Journal.sq new file mode 100644 index 0000000..f4d8a25 --- /dev/null +++ b/src/main/sqldelight/dev/hossain/postgresqldelight/Journal.sq @@ -0,0 +1,16 @@ +CREATE TABLE IF NOT EXISTS Journal ( + id serial NOT NULL PRIMARY KEY, + entry json NOT NULL +); + + +selectAll: +SELECT * +FROM Journal; + +insert: +INSERT INTO Journal(entry) +VALUES (?); + +totalRecords: +SELECT count(*) AS total_rows FROM Journal; \ No newline at end of file