Skip to content

Commit

Permalink
optional table and column annotation
Browse files Browse the repository at this point in the history
  • Loading branch information
Enaium committed Jan 24, 2025
1 parent 281dcfb commit 520f7f1
Show file tree
Hide file tree
Showing 6 changed files with 78 additions and 52 deletions.
82 changes: 42 additions & 40 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -292,46 +292,48 @@ jimmer {

## Gradle Project Plugin Extension

| extension | type | default | description |
|-------------------------------------|------------------------------------------------------|--------------------------|---------------------------------------------|
| `version` | `String` | `latest.release` | Jimmer version. |
| `keepIsPrefix` | `Boolean` | `false` | Keep 'is' prefix in getter method. |
| `generator` | `cn.enaium.jimmer.gradle.extension.Generator` | | Entity generator. |
| `generator.target` | `cn.enaium.jimmer.gradle.extension.Target` | | Entity generator target. |
| `generator.target.srcDir` | `String` | | Entity generator target src dir. |
| `generator.target.packageName` | `String` | | Entity generator target package. |
| `generator.jdbc` | `cn.enaium.jimmer.gradle.extension.Jdbc` | | For database connection. |
| `generator.jdbc.driver` | `cn.enaium.jimmer.gradle.extension.Driver` | | Database driver. |
| `generator.jdbc.url` | `String` | | Database url. |
| `generator.jdbc.username` | `String` | | Database username. |
| `generator.jdbc.password` | `String` | | Database password. |
| `generator.jdbc.ddl | `File` | | DDL sql file. |
| `generator.jdbc.catalog` | `String` | | Database catalog. |
| `generator.jdbc.schemaPattern` | `String` | | Database schema pattern. |
| `generator.jdbc.tableNamePattern` | `String` | | Database table name pattern. |
| `generator.table` | `cn.enaium.jimmer.gradle.extension.Table` | | Table rule. |
| `generator.table.primaryKey` | `String` | `id` | Table primary key name. |
| `generator.table.asociation` | `cn.enaium.jimmer.gradle.extension.Association` | `REAL` | Table association rule. |
| `generator.table.typeMappings` | `Map<String, String>` | [default](#typemappings) | Column type mapping. |
| `generator.table.comment` | `Boolean` | `false` | Generate table comment. |
| `generator.table.idView` | `Boolean` | `false` | Generate id view. |
| `generator.poet` | `cn.enaium.jimmer.gradle.extension.Poet` | | Poet rule. |
| `generator.poet.indent` | `String` | Four spaces | Poet indent. |
| `client.checkedExceptions` | `Boolean` | | |
| `client.ignoreJdkWarning` | `Boolean` | | Java only. |
| `dto.dirs` | `List<String>` | | |
| `dto.testDirs` | `List<String>` | | |
| `dto.mutable` | `Boolean` | | Kotlin only. |
| `dto.defaultNullableInputModifier` | `cn.enaium.jimmer.gradle.extension.InputDtoModifier` | | |
| `dto.hibernateValidatorEnhancement` | `Boolean` | | Java only. |
| `entry` | `cn.enaium.jimmer.gradle.extension.Entry` | | Java only. |
| `entry.objects` | `String` | | Generate `objects` class name, java only. |
| `entry.tables` | `String` | | Generate `tables` class name, java only. |
| `entry.tableExes` | `String` | | Generate `tableExes` class name, java only. |
| `entry.fetchers` | `String` | | Generate `fetchers` class name, java only. |
| `immutable.isModuleRequired` | `Boolean` | | Kotlin only. |
| `source.includes` | `List<String>` | | Java only. |
| `source.excludes` | `List<String>` | | Java only. |
| extension | type | default | description |
|-------------------------------------|------------------------------------------------------|------------------|---------------------------------------------|
| `version` | `String` | `latest.release` | Jimmer version. |
| `keepIsPrefix` | `Boolean` | `false` | Keep 'is' prefix in getter method. |
| `generator` | `cn.enaium.jimmer.gradle.extension.Generator` | | Entity generator. |
| `generator.target` | `cn.enaium.jimmer.gradle.extension.Target` | | Entity generator target. |
| `generator.target.srcDir` | `String` | | Entity generator target src dir. |
| `generator.target.packageName` | `String` | | Entity generator target package. |
| `generator.jdbc` | `cn.enaium.jimmer.gradle.extension.Jdbc` | | For database connection. |
| `generator.jdbc.driver` | `cn.enaium.jimmer.gradle.extension.Driver` | | Database driver. |
| `generator.jdbc.url` | `String` | | Database url. |
| `generator.jdbc.username` | `String` | | Database username. |
| `generator.jdbc.password` | `String` | | Database password. |
| `generator.jdbc.ddl` | `File` | | DDL sql file. |
| `generator.jdbc.catalog` | `String` | | Database catalog. |
| `generator.jdbc.schemaPattern` | `String` | | Database schema pattern. |
| `generator.jdbc.tableNamePattern` | `String` | | Database table name pattern. |
| `generator.table` | `cn.enaium.jimmer.gradle.extension.Table` | | Table rule. |
| `generator.table.name` | `Boolean` | `false` | Add table annotation. |
| `generator.table.column` | `Boolean` | `false` | Add column annotation. |
| `generator.table.primaryKey` | `String` | `id` | Table primary key name. |
| `generator.table.asociation` | `cn.enaium.jimmer.gradle.extension.Association` | `REAL` | Table association rule. |
| `generator.table.typeMappings` | `Map<String, String>` | | Column type mapping. |
| `generator.table.comment` | `Boolean` | `false` | Generate table comment. |
| `generator.table.idView` | `Boolean` | `false` | Generate id view. |
| `generator.poet` | `cn.enaium.jimmer.gradle.extension.Poet` | | Poet rule. |
| `generator.poet.indent` | `String` | Four spaces | Poet indent. |
| `client.checkedExceptions` | `Boolean` | | |
| `client.ignoreJdkWarning` | `Boolean` | | Java only. |
| `dto.dirs` | `List<String>` | | |
| `dto.testDirs` | `List<String>` | | |
| `dto.mutable` | `Boolean` | | Kotlin only. |
| `dto.defaultNullableInputModifier` | `cn.enaium.jimmer.gradle.extension.InputDtoModifier` | | |
| `dto.hibernateValidatorEnhancement` | `Boolean` | | Java only. |
| `entry` | `cn.enaium.jimmer.gradle.extension.Entry` | | Java only. |
| `entry.objects` | `String` | | Generate `objects` class name, java only. |
| `entry.tables` | `String` | | Generate `tables` class name, java only. |
| `entry.tableExes` | `String` | | Generate `tableExes` class name, java only. |
| `entry.fetchers` | `String` | | Generate `fetchers` class name, java only. |
| `immutable.isModuleRequired` | `Boolean` | | Kotlin only. |
| `source.includes` | `List<String>` | | Java only. |
| `source.excludes` | `List<String>` | | Java only. |

## Gradle Settings Plugin Extension

Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
kotlin.code.style=official
version=0.0.27
version=0.0.28
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[versions]
kotlin = "2.1.0"
publishing = "1.2.1"
kotlinpoet = "1.16.0"
kotlinpoet = "2.0.0"
javapoet = "1.13.0"
testcontainers = "1.19.7"
postgresql = "42.7.3"
Expand Down
2 changes: 2 additions & 0 deletions src/main/kotlin/cn/enaium/jimmer/gradle/extension/Table.kt
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ import javax.inject.Inject
* @author Enaium
*/
open class Table @Inject constructor(objects: ObjectFactory) {
val name: Property<Boolean> = objects.property(Boolean::class.java).convention(false)
val column: Property<Boolean> = objects.property(Boolean::class.java).convention(false)
val primaryKey: Property<String> = objects.property(String::class.java).convention("id")
val association: Property<Association> = objects.property(Association::class.java).convention(Association.REAL)
val typeMappings: MapProperty<String, String> = objects.mapProperty(String::class.java, String::class.java)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,14 @@ class JavaEntityGenerateService : EntityGenerateService {

methodBuilder.returns(getTypeName(javaTypeMappings, column))

if (generator.table.column.get()) {
methodBuilder.addAnnotation(
AnnotationSpec.builder(org.babyfish.jimmer.sql.Column::class.java)
.addMember("name", "\$S", column.name)
.build()
)
}

if (generator.table.comment.get()) {
column.remark?.let {
methodBuilder.addJavadoc(it)
Expand Down Expand Up @@ -207,11 +215,14 @@ class JavaEntityGenerateService : EntityGenerateService {
}
type.addAnnotation(Entity::class.java)
type.addModifiers(Modifier.PUBLIC)
type.addAnnotation(
AnnotationSpec.builder(Table::class.java)
.addMember("name", "\$S", table.name)
.build()
)
if (generator.table.name.get()) {
type.addAnnotation(
AnnotationSpec.builder(Table::class.java)
.addMember("name", "\$S", table.name)
.build()
)
}
type
}.let {
type2Builder[typeName] = it
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,14 @@ class KotlinEntityGenerateService : EntityGenerateService {
getTypeName(kotlinTypeMappings, column).copy(nullable = column.nullable)
)

if (generator.table.column.get()) {
propertyBuilder.addAnnotation(
AnnotationSpec.builder(org.babyfish.jimmer.sql.Column::class)
.addMember("name = %S", column.name)
.build()
)
}

if (generator.table.comment.get()) {
column.remark?.let {
propertyBuilder.addKdoc(it)
Expand Down Expand Up @@ -190,11 +198,14 @@ class KotlinEntityGenerateService : EntityGenerateService {
}

type.addAnnotation(Entity::class)
type.addAnnotation(
AnnotationSpec.builder(Table::class)
.addMember("name = %S", table.name)
.build()
)
if (generator.table.name.get()) {
type.addAnnotation(
AnnotationSpec.builder(Table::class)
.addMember("name = %S", table.name)
.build()
)
}
type
}.let {
type2Builder[typeName] = it
}
Expand Down

0 comments on commit 520f7f1

Please sign in to comment.