From 22eabd2a94fcd62da7c5c321e4dff1c4f9be27b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=9C=E9=87=8C=E7=9A=84=E5=90=91=E6=97=A5=E8=91=B5?= <641571835@qq.com> Date: Fri, 16 Sep 2022 11:47:58 +0800 Subject: [PATCH 1/7] add postgresql default value support --- .../ktorm/support/postgresql/DefaultValue.kt | 35 ++++++++ .../support/postgresql/PostgreSqlDialect.kt | 6 ++ .../support/postgresql/DefaultValueTest.kt | 79 +++++++++++++++++++ .../test/resources/drop-postgresql-data.sql | 1 + .../test/resources/init-postgresql-data.sql | 8 +- 5 files changed, 128 insertions(+), 1 deletion(-) create mode 100644 ktorm-support-postgresql/src/main/kotlin/org/ktorm/support/postgresql/DefaultValue.kt create mode 100644 ktorm-support-postgresql/src/test/kotlin/org/ktorm/support/postgresql/DefaultValueTest.kt diff --git a/ktorm-support-postgresql/src/main/kotlin/org/ktorm/support/postgresql/DefaultValue.kt b/ktorm-support-postgresql/src/main/kotlin/org/ktorm/support/postgresql/DefaultValue.kt new file mode 100644 index 00000000..6cedab29 --- /dev/null +++ b/ktorm-support-postgresql/src/main/kotlin/org/ktorm/support/postgresql/DefaultValue.kt @@ -0,0 +1,35 @@ +/* + * Copyright 2018-2022 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.ktorm.support.postgresql + +import org.ktorm.expression.ScalarExpression +import org.ktorm.schema.Column +import org.ktorm.schema.SqlType +import java.util.Collections.emptyMap + +/** + * DefaultValue expression, translated to the `default` keyword in PostgreSQL. + */ +public data class DefaultValueExpression( + override val sqlType: SqlType, + override val isLeafNode: Boolean = true, + override val extraProperties: Map = emptyMap() +) : ScalarExpression() + +/** + * DefaultValue expression, translated to the `default` keyword in PostgreSQL. + */ +public fun Column.defaultValue(): DefaultValueExpression = DefaultValueExpression(this.sqlType) diff --git a/ktorm-support-postgresql/src/main/kotlin/org/ktorm/support/postgresql/PostgreSqlDialect.kt b/ktorm-support-postgresql/src/main/kotlin/org/ktorm/support/postgresql/PostgreSqlDialect.kt index 8bb12bca..79e6a8d7 100644 --- a/ktorm-support-postgresql/src/main/kotlin/org/ktorm/support/postgresql/PostgreSqlDialect.kt +++ b/ktorm-support-postgresql/src/main/kotlin/org/ktorm/support/postgresql/PostgreSqlDialect.kt @@ -69,6 +69,7 @@ public open class PostgreSqlFormatter( is ILikeExpression -> visitILike(expr) is HStoreExpression -> visitHStore(expr) is CubeExpression -> visitCube(expr) + is DefaultValueExpression -> visitDefaultValue(expr) else -> super.visitScalar(expr) } @@ -218,6 +219,11 @@ public open class PostgreSqlFormatter( return expr } + protected open fun visitDefaultValue(expr: DefaultValueExpression): DefaultValueExpression { + writeKeyword("default ") + return expr + } + protected open fun visitInsertOrUpdate(expr: InsertOrUpdateExpression): InsertOrUpdateExpression { writeKeyword("insert into ") visitTable(expr.table) diff --git a/ktorm-support-postgresql/src/test/kotlin/org/ktorm/support/postgresql/DefaultValueTest.kt b/ktorm-support-postgresql/src/test/kotlin/org/ktorm/support/postgresql/DefaultValueTest.kt new file mode 100644 index 00000000..5feea813 --- /dev/null +++ b/ktorm-support-postgresql/src/test/kotlin/org/ktorm/support/postgresql/DefaultValueTest.kt @@ -0,0 +1,79 @@ +package org.ktorm.support.postgresql + +import org.junit.Test +import org.ktorm.database.Database +import org.ktorm.dsl.eq +import org.ktorm.dsl.inList +import org.ktorm.entity.* +import org.ktorm.schema.Table +import org.ktorm.schema.int +import org.ktorm.schema.varchar +import kotlin.test.assertEquals +import kotlin.test.assertNotNull +import kotlin.test.assertNull + +class DefaultValueTest : BasePostgreSqlTest() { + + object Users : Table("t_user") { + val id = int("id").primaryKey().bindTo { it.id } + val username = varchar("username").bindTo { it.username } + val age = int("age").bindTo { it.age } + } + + interface User : Entity { + var id: Int + var username: String + var age: Int? + } + + private val Database.users: EntitySequence get() = this.sequenceOf(Users) + + @Test + fun insert() { + val id = database.insertReturning(Users, returning = Users.id) { + set(it.id, it.id.defaultValue()) + set(it.username, it.username.defaultValue()) + set(it.age, it.age.defaultValue()) + } + assertNotNull(id) + val entity = database.users.first { it.id eq id } + assertNotNull(entity) + assertNotNull(entity.id) + assertEquals(entity.username, "default") + assertNull(entity.age) + } + + @Test + fun bulkInsert() { + database.bulkInsert(Users) { + item { + set(it.id, 10) + set(it.username, it.username.defaultValue()) + set(it.age, 10) + } + item { + set(it.id, 11) + set(it.username, it.username.defaultValue()) + set(it.age, 11) + } + } + val defaultValues = database.users.filter { it.id inList (10..11).toList() }.toList() + assertEquals(defaultValues.size, 2) + for (defaultValue in defaultValues) { + assertEquals(defaultValue.username, "default") + } + + database.bulkInsertOrUpdate(Users) { + item { + set(it.id, 10) + set(it.age, 10) + } + onConflict(it.id) { + set(it.age, it.age.defaultValue()) + } + } + val user = database.users.first { it.id eq 10 } + assertNull(user.age) + } + +} diff --git a/ktorm-support-postgresql/src/test/resources/drop-postgresql-data.sql b/ktorm-support-postgresql/src/test/resources/drop-postgresql-data.sql index 93423d87..d9fb695e 100644 --- a/ktorm-support-postgresql/src/test/resources/drop-postgresql-data.sql +++ b/ktorm-support-postgresql/src/test/resources/drop-postgresql-data.sql @@ -5,3 +5,4 @@ drop table if exists t_enum; drop type if exists mood; drop table if exists t_json; drop table t_earthdistance; +drop table if exists t_user; diff --git a/ktorm-support-postgresql/src/test/resources/init-postgresql-data.sql b/ktorm-support-postgresql/src/test/resources/init-postgresql-data.sql index ec1eacb1..9bde1dca 100644 --- a/ktorm-support-postgresql/src/test/resources/init-postgresql-data.sql +++ b/ktorm-support-postgresql/src/test/resources/init-postgresql-data.sql @@ -34,6 +34,12 @@ create table t_json (obj json, arr json); create table t_earthdistance(earth_field earth, cube_field cube); +create table t_user( + id serial primary key, + username varchar default 'default', + age int +); + insert into t_department(name, location, "mixedCase") values ('tech', 'Guangzhou', 'one'); insert into t_department(name, location, "mixedCase") values ('finance', 'Beijing', 'two'); @@ -51,4 +57,4 @@ insert into t_metadata(attrs, numbers) values ('a=>1, b=>2, c=>NULL'::hstore, array['a', 'b', 'c']); insert into t_enum(current_mood) -values ('HAPPY') \ No newline at end of file +values ('HAPPY') From 6ab35fb41a2e609728cec16588070331477f24cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=9C=E9=87=8C=E7=9A=84=E5=90=91=E6=97=A5=E8=91=B5?= <641571835@qq.com> Date: Fri, 16 Sep 2022 13:46:33 +0800 Subject: [PATCH 2/7] add mysql default value support --- .../org/ktorm/support/mysql/DefaultValue.kt | 35 ++++++++ .../org/ktorm/support/mysql/MySqlDialect.kt | 6 ++ .../ktorm/support/mysql/DefaultValueTest.kt | 82 +++++++++++++++++++ .../src/test/resources/drop-mysql-data.sql | 3 +- .../src/test/resources/init-mysql-data.sql | 6 ++ 5 files changed, 131 insertions(+), 1 deletion(-) create mode 100644 ktorm-support-mysql/src/main/kotlin/org/ktorm/support/mysql/DefaultValue.kt create mode 100644 ktorm-support-mysql/src/test/kotlin/org/ktorm/support/mysql/DefaultValueTest.kt diff --git a/ktorm-support-mysql/src/main/kotlin/org/ktorm/support/mysql/DefaultValue.kt b/ktorm-support-mysql/src/main/kotlin/org/ktorm/support/mysql/DefaultValue.kt new file mode 100644 index 00000000..c6f1af29 --- /dev/null +++ b/ktorm-support-mysql/src/main/kotlin/org/ktorm/support/mysql/DefaultValue.kt @@ -0,0 +1,35 @@ +/* + * Copyright 2018-2022 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.ktorm.support.mysql + +import org.ktorm.expression.ScalarExpression +import org.ktorm.schema.Column +import org.ktorm.schema.SqlType +import java.util.Collections.emptyMap + +/** + * DefaultValue expression, translated to the `default` keyword in MySQL. + */ +public data class DefaultValueExpression( + override val sqlType: SqlType, + override val isLeafNode: Boolean = true, + override val extraProperties: Map = emptyMap() +) : ScalarExpression() + +/** + * DefaultValue expression, translated to the `default` keyword in MySQL. + */ +public fun Column.defaultValue(): DefaultValueExpression = DefaultValueExpression(this.sqlType) diff --git a/ktorm-support-mysql/src/main/kotlin/org/ktorm/support/mysql/MySqlDialect.kt b/ktorm-support-mysql/src/main/kotlin/org/ktorm/support/mysql/MySqlDialect.kt index 0f86e4ea..1c1f7dd5 100644 --- a/ktorm-support-mysql/src/main/kotlin/org/ktorm/support/mysql/MySqlDialect.kt +++ b/ktorm-support-mysql/src/main/kotlin/org/ktorm/support/mysql/MySqlDialect.kt @@ -53,6 +53,7 @@ public open class MySqlFormatter( override fun visitScalar(expr: ScalarExpression): ScalarExpression { val result = when (expr) { is MatchAgainstExpression -> visitMatchAgainst(expr) + is DefaultValueExpression -> visitDefaultValue(expr) else -> super.visitScalar(expr) } @@ -167,6 +168,11 @@ public open class MySqlFormatter( write(") ") return expr } + + protected open fun visitDefaultValue(expr: DefaultValueExpression): DefaultValueExpression { + writeKeyword("default ") + return expr + } } /** diff --git a/ktorm-support-mysql/src/test/kotlin/org/ktorm/support/mysql/DefaultValueTest.kt b/ktorm-support-mysql/src/test/kotlin/org/ktorm/support/mysql/DefaultValueTest.kt new file mode 100644 index 00000000..6eb68a64 --- /dev/null +++ b/ktorm-support-mysql/src/test/kotlin/org/ktorm/support/mysql/DefaultValueTest.kt @@ -0,0 +1,82 @@ +package org.ktorm.support.mysql + +import org.junit.Test +import org.ktorm.database.Database +import org.ktorm.dsl.eq +import org.ktorm.dsl.inList +import org.ktorm.dsl.insertAndGenerateKey +import org.ktorm.entity.* +import org.ktorm.schema.Table +import org.ktorm.schema.int +import org.ktorm.schema.varchar +import kotlin.test.assertEquals +import kotlin.test.assertNotNull +import kotlin.test.assertNull +import kotlin.test.assertTrue + +class DefaultValueTest : BaseMySqlTest() { + + object Users : Table("t_user") { + val id = int("id").primaryKey().bindTo { it.id } + val username = varchar("username").bindTo { it.username } + val age = int("age").bindTo { it.age } + } + + interface User : Entity { + var id: Int + var username: String + var age: Int? + } + + private val Database.users: EntitySequence get() = this.sequenceOf(Users) + + @Test + fun insert() { + val id = database.insertAndGenerateKey(Users) { + set(it.id, it.id.defaultValue()) + set(it.username, it.username.defaultValue()) + set(it.age, it.age.defaultValue()) + } + assertNotNull(id) + assertTrue(id is Int) + val entity = database.users.first { it.id eq id } + assertNotNull(entity) + assertNotNull(entity.id) + assertEquals(entity.username, "default") + assertNull(entity.age) + } + + @Test + fun bulkInsert() { + database.bulkInsert(Users) { + item { + set(it.id, 10) + set(it.username, it.username.defaultValue()) + set(it.age, 10) + } + item { + set(it.id, 11) + set(it.username, it.username.defaultValue()) + set(it.age, 11) + } + } + val defaultValues = database.users.filter { it.id inList (10..11).toList() }.toList() + assertEquals(defaultValues.size, 2) + for (defaultValue in defaultValues) { + assertEquals(defaultValue.username, "default") + } + + database.bulkInsertOrUpdate(Users) { + item { + set(it.id, 10) + set(it.age, 10) + } + onDuplicateKey { + set(it.age, it.age.defaultValue()) + } + } + val user = database.users.first { it.id eq 10 } + assertNull(user.age) + } + +} diff --git a/ktorm-support-mysql/src/test/resources/drop-mysql-data.sql b/ktorm-support-mysql/src/test/resources/drop-mysql-data.sql index 70e61456..37f6a878 100644 --- a/ktorm-support-mysql/src/test/resources/drop-mysql-data.sql +++ b/ktorm-support-mysql/src/test/resources/drop-mysql-data.sql @@ -1,2 +1,3 @@ drop table if exists t_department; -drop table if exists t_employee; \ No newline at end of file +drop table if exists t_employee; +drop table if exists t_user; diff --git a/ktorm-support-mysql/src/test/resources/init-mysql-data.sql b/ktorm-support-mysql/src/test/resources/init-mysql-data.sql index 6e043be2..132a2d2c 100644 --- a/ktorm-support-mysql/src/test/resources/init-mysql-data.sql +++ b/ktorm-support-mysql/src/test/resources/init-mysql-data.sql @@ -17,6 +17,12 @@ create table t_employee( create fulltext index employee_name_job on t_employee(name, job); +create table t_user( + id int not null primary key auto_increment, + username varchar(128) default 'default', + age int +); + insert into t_department(name, location) values ('tech', 'Guangzhou'); insert into t_department(name, location) values ('finance', 'Beijing'); From fcae8463d4c2848e10d035b576372bf9502049f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=9C=E9=87=8C=E7=9A=84=E5=90=91=E6=97=A5=E8=91=B5?= <641571835@qq.com> Date: Fri, 16 Sep 2022 13:59:28 +0800 Subject: [PATCH 3/7] fix DefaultValueTest --- .../src/test/kotlin/org/ktorm/support/mysql/DefaultValueTest.kt | 2 +- .../kotlin/org/ktorm/support/postgresql/DefaultValueTest.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ktorm-support-mysql/src/test/kotlin/org/ktorm/support/mysql/DefaultValueTest.kt b/ktorm-support-mysql/src/test/kotlin/org/ktorm/support/mysql/DefaultValueTest.kt index 6eb68a64..9841db92 100644 --- a/ktorm-support-mysql/src/test/kotlin/org/ktorm/support/mysql/DefaultValueTest.kt +++ b/ktorm-support-mysql/src/test/kotlin/org/ktorm/support/mysql/DefaultValueTest.kt @@ -39,7 +39,7 @@ class DefaultValueTest : BaseMySqlTest() { } assertNotNull(id) assertTrue(id is Int) - val entity = database.users.first { it.id eq id } + val entity = database.users.firstOrNull { it.id eq id } assertNotNull(entity) assertNotNull(entity.id) assertEquals(entity.username, "default") diff --git a/ktorm-support-postgresql/src/test/kotlin/org/ktorm/support/postgresql/DefaultValueTest.kt b/ktorm-support-postgresql/src/test/kotlin/org/ktorm/support/postgresql/DefaultValueTest.kt index 5feea813..7dd5befa 100644 --- a/ktorm-support-postgresql/src/test/kotlin/org/ktorm/support/postgresql/DefaultValueTest.kt +++ b/ktorm-support-postgresql/src/test/kotlin/org/ktorm/support/postgresql/DefaultValueTest.kt @@ -36,7 +36,7 @@ class DefaultValueTest : BasePostgreSqlTest() { set(it.age, it.age.defaultValue()) } assertNotNull(id) - val entity = database.users.first { it.id eq id } + val entity = database.users.firstOrNull { it.id eq id } assertNotNull(entity) assertNotNull(entity.id) assertEquals(entity.username, "default") From 86adc8165fcbaa34ad859a146613c86dff62b708 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=9C=E9=87=8C=E7=9A=84=E5=90=91=E6=97=A5=E8=91=B5?= <641571835@qq.com> Date: Fri, 16 Sep 2022 16:41:58 +0800 Subject: [PATCH 4/7] fix mysql default value test --- .../test/kotlin/org/ktorm/support/mysql/DefaultValueTest.kt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ktorm-support-mysql/src/test/kotlin/org/ktorm/support/mysql/DefaultValueTest.kt b/ktorm-support-mysql/src/test/kotlin/org/ktorm/support/mysql/DefaultValueTest.kt index 9841db92..3923b155 100644 --- a/ktorm-support-mysql/src/test/kotlin/org/ktorm/support/mysql/DefaultValueTest.kt +++ b/ktorm-support-mysql/src/test/kotlin/org/ktorm/support/mysql/DefaultValueTest.kt @@ -10,9 +10,9 @@ import org.ktorm.schema.Table import org.ktorm.schema.int import org.ktorm.schema.varchar import kotlin.test.assertEquals +import kotlin.test.assertIs import kotlin.test.assertNotNull import kotlin.test.assertNull -import kotlin.test.assertTrue class DefaultValueTest : BaseMySqlTest() { @@ -37,8 +37,7 @@ class DefaultValueTest : BaseMySqlTest() { set(it.username, it.username.defaultValue()) set(it.age, it.age.defaultValue()) } - assertNotNull(id) - assertTrue(id is Int) + assertIs(id) val entity = database.users.firstOrNull { it.id eq id } assertNotNull(entity) assertNotNull(entity.id) From 441760abfd2bcccd69123edfa068c77e34d5d731 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=9C=E9=87=8C=E7=9A=84=E5=90=91=E6=97=A5=E8=91=B5?= <641571835@qq.com> Date: Fri, 16 Sep 2022 16:42:35 +0800 Subject: [PATCH 5/7] rename DefaultValueExpression file --- .../support/mysql/{DefaultValue.kt => DefaultValueExpression.kt} | 0 .../postgresql/{DefaultValue.kt => DefaultValueExpression.kt} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename ktorm-support-mysql/src/main/kotlin/org/ktorm/support/mysql/{DefaultValue.kt => DefaultValueExpression.kt} (100%) rename ktorm-support-postgresql/src/main/kotlin/org/ktorm/support/postgresql/{DefaultValue.kt => DefaultValueExpression.kt} (100%) diff --git a/ktorm-support-mysql/src/main/kotlin/org/ktorm/support/mysql/DefaultValue.kt b/ktorm-support-mysql/src/main/kotlin/org/ktorm/support/mysql/DefaultValueExpression.kt similarity index 100% rename from ktorm-support-mysql/src/main/kotlin/org/ktorm/support/mysql/DefaultValue.kt rename to ktorm-support-mysql/src/main/kotlin/org/ktorm/support/mysql/DefaultValueExpression.kt diff --git a/ktorm-support-postgresql/src/main/kotlin/org/ktorm/support/postgresql/DefaultValue.kt b/ktorm-support-postgresql/src/main/kotlin/org/ktorm/support/postgresql/DefaultValueExpression.kt similarity index 100% rename from ktorm-support-postgresql/src/main/kotlin/org/ktorm/support/postgresql/DefaultValue.kt rename to ktorm-support-postgresql/src/main/kotlin/org/ktorm/support/postgresql/DefaultValueExpression.kt From f432ded1d93949d40fdc065581790a4be738f9da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=9C=E9=87=8C=E7=9A=84=E5=90=91=E6=97=A5=E8=91=B5?= <641571835@qq.com> Date: Mon, 19 Sep 2022 09:34:58 +0800 Subject: [PATCH 6/7] fix DefaultValueExpression --- .../src/main/kotlin/org/ktorm/support/mysql/MySqlDialect.kt | 5 +++++ .../kotlin/org/ktorm/support/postgresql/PostgreSqlDialect.kt | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/ktorm-support-mysql/src/main/kotlin/org/ktorm/support/mysql/MySqlDialect.kt b/ktorm-support-mysql/src/main/kotlin/org/ktorm/support/mysql/MySqlDialect.kt index 1c1f7dd5..cc11661a 100644 --- a/ktorm-support-mysql/src/main/kotlin/org/ktorm/support/mysql/MySqlDialect.kt +++ b/ktorm-support-mysql/src/main/kotlin/org/ktorm/support/mysql/MySqlDialect.kt @@ -193,6 +193,7 @@ public open class MySqlExpressionVisitor : SqlExpressionVisitor() { override fun visitScalar(expr: ScalarExpression): ScalarExpression { val result = when (expr) { is MatchAgainstExpression -> visitMatchAgainst(expr) + is DefaultValueExpression -> visitDefaultValue(expr) else -> super.visitScalar(expr) } @@ -269,4 +270,8 @@ public open class MySqlExpressionVisitor : SqlExpressionVisitor() { return expr.copy(matchColumns = matchColumns) } } + + protected open fun visitDefaultValue(expr: DefaultValueExpression): DefaultValueExpression { + return expr + } } diff --git a/ktorm-support-postgresql/src/main/kotlin/org/ktorm/support/postgresql/PostgreSqlDialect.kt b/ktorm-support-postgresql/src/main/kotlin/org/ktorm/support/postgresql/PostgreSqlDialect.kt index 79e6a8d7..4849b621 100644 --- a/ktorm-support-postgresql/src/main/kotlin/org/ktorm/support/postgresql/PostgreSqlDialect.kt +++ b/ktorm-support-postgresql/src/main/kotlin/org/ktorm/support/postgresql/PostgreSqlDialect.kt @@ -316,6 +316,7 @@ public open class PostgreSqlExpressionVisitor : SqlExpressionVisitor() { is ILikeExpression -> visitILike(expr) is HStoreExpression -> visitHStore(expr) is CubeExpression -> visitCube(expr) + is DefaultValueExpression -> visitDefaultValue(expr) else -> super.visitScalar(expr) } @@ -425,4 +426,8 @@ public open class PostgreSqlExpressionVisitor : SqlExpressionVisitor() { return if (changed) result else assignments } + + protected open fun visitDefaultValue(expr: DefaultValueExpression): DefaultValueExpression { + return expr + } } From dbbf7cfa8269422106e67b1d43331d6f9da1c58e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=9C=E9=87=8C=E7=9A=84=E5=90=91=E6=97=A5=E8=91=B5?= <641571835@qq.com> Date: Mon, 19 Sep 2022 09:36:09 +0800 Subject: [PATCH 7/7] add developer --- buildSrc/src/main/kotlin/ktorm.maven-publish.gradle.kts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/buildSrc/src/main/kotlin/ktorm.maven-publish.gradle.kts b/buildSrc/src/main/kotlin/ktorm.maven-publish.gradle.kts index 7241ebfd..b7fe2cce 100644 --- a/buildSrc/src/main/kotlin/ktorm.maven-publish.gradle.kts +++ b/buildSrc/src/main/kotlin/ktorm.maven-publish.gradle.kts @@ -131,6 +131,11 @@ publishing { name.set("ccr") email.set("2938137849@qq.com") } + developer { + id.set("lookup-cat") + name.set("夜里的向日葵") + email.set("641571835@qq.com") + } } } }