Skip to content

Commit 0c15e7e

Browse files
authored
Merge pull request #36 from qdsfdhvh/seiko/remove_db_entity
Remove DBEntity
2 parents 9f3db33 + 6a589c8 commit 0c15e7e

30 files changed

+137
-219
lines changed

Diff for: sample/src/commonMain/kotlin/com/ctrip/sqllin/sample/Sample.kt

+3-11
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,9 @@ package com.ctrip.sqllin.sample
1919
import com.ctrip.sqllin.driver.DatabaseConfiguration
2020
import com.ctrip.sqllin.dsl.Database
2121
import com.ctrip.sqllin.dsl.annotation.DBRow
22-
import com.ctrip.sqllin.dsl.DBEntity
2322
import com.ctrip.sqllin.dsl.sql.clause.*
2423
import com.ctrip.sqllin.dsl.sql.clause.OrderByWay.DESC
2524
import com.ctrip.sqllin.dsl.sql.statement.SelectStatement
26-
import kotlinx.serialization.KSerializer
2725
import kotlinx.serialization.Serializable
2826

2927
/**
@@ -97,26 +95,20 @@ object Sample {
9795
data class Person(
9896
val age: Int?,
9997
val name: String?,
100-
) : DBEntity<Person> {
101-
override fun kSerializer(): KSerializer<Person> = serializer()
102-
}
98+
)
10399

104100
@DBRow("transcript")
105101
@Serializable
106102
data class Transcript(
107103
val name: String?,
108104
val math: Int,
109105
val english: Int,
110-
) : DBEntity<Transcript> {
111-
override fun kSerializer(): KSerializer<Transcript> = serializer()
112-
}
106+
)
113107

114108
@Serializable
115109
data class Student(
116110
val name: String?,
117111
val age: Int?,
118112
val math: Int,
119113
val english: Int,
120-
) : DBEntity<Student> {
121-
override fun kSerializer(): KSerializer<Student> = serializer()
122-
}
114+
)

Diff for: sqllin-dsl/doc/getting-start-cn.md

+1-4
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,6 @@ override fun onDestroy() {
131131
_sqllin-dsl_ 中,你可以直接插入或查找对象。所以,你需要使用正确的方式定义你的 data class,比如:
132132

133133
```kotlin
134-
import com.ctrip.sqllin.dsl.DBEntity
135134
import com.ctrip.sqllin.dsl.annotation.DBRow
136135
import kotlinx.serialization.Serializable
137136

@@ -140,9 +139,7 @@ import kotlinx.serialization.Serializable
140139
data class Person(
141140
val name: String,
142141
val age: Int,
143-
) : DBEntity<Person> {
144-
override fun kSerializer(): KSerializer<Person> = serializer()
145-
}
142+
)
146143
```
147144
你定义的 DBEntity 的属性名应与数据库表的列名相对应。DBEntity 不应该拥有名字与表中的所有列名均不相同的属性,但是
148145
DBEntity 的属性数量可以比表中列的数量少。

Diff for: sqllin-dsl/doc/getting-start.md

+1-4
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,6 @@ override fun onDestroy() {
139139
In _sqllin-dsl_, you can insert and query objects directly. So, you need to use the correct way to define your data class. For example:
140140

141141
```kotlin
142-
import com.ctrip.sqllin.dsl.DBEntity
143142
import com.ctrip.sqllin.dsl.annotation.DBRow
144143
import kotlinx.serialization.Serializable
145144

@@ -148,9 +147,7 @@ import kotlinx.serialization.Serializable
148147
data class Person(
149148
val name: String,
150149
val age: Int,
151-
) : DBEntity<Person> {
152-
override fun kSerializer(): KSerializer<Person> = serializer()
153-
}
150+
)
154151
```
155152

156153
Your DBEntity's property names should same with the database table's column names. The DBEntity cannot have properties with names different from all

Diff for: sqllin-dsl/src/commonMain/kotlin/com/ctrip/sqllin/dsl/DBEntity.kt

-29
This file was deleted.

Diff for: sqllin-dsl/src/commonMain/kotlin/com/ctrip/sqllin/dsl/Database.kt

+32-32
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ public class Database(
115115
executeEngine.addStatement(statement)
116116
}
117117

118-
private fun <T : DBEntity<T>> addSelectStatement(statement: SelectStatement<T>) {
118+
private fun <T> addSelectStatement(statement: SelectStatement<T>) {
119119
if (unionSelectStatementGroupStack.isNotEmpty)
120120
(unionSelectStatementGroupStack.top as UnionSelectStatementGroup<T>).addSelectStatement(statement)
121121
else
@@ -128,19 +128,19 @@ public class Database(
128128
* Insert.
129129
*/
130130

131-
public infix fun <T : DBEntity<T>> Table<T>.INSERT(entities: Iterable<T>) {
131+
public infix fun <T> Table<T>.INSERT(entities: Iterable<T>) {
132132
val statement = Insert.insert(this, databaseConnection, entities)
133133
addStatement(statement)
134134
}
135135

136-
public infix fun <T : DBEntity<T>> Table<T>.INSERT(entity: T): Unit =
136+
public infix fun <T> Table<T>.INSERT(entity: T): Unit =
137137
INSERT(listOf(entity))
138138

139139
/**
140140
* Update.
141141
*/
142142

143-
public infix fun <T : DBEntity<T>> Table<T>.UPDATE(clause: SetClause<T>): UpdateStatementWithoutWhereClause<T> =
143+
public infix fun <T> Table<T>.UPDATE(clause: SetClause<T>): UpdateStatementWithoutWhereClause<T> =
144144
transactionStatementsGroup?.let {
145145
val statement = Update.update(this, databaseConnection, it, clause)
146146
it addStatement statement
@@ -158,7 +158,7 @@ public class Database(
158158
addStatement(statement)
159159
}
160160

161-
public infix fun <T : DBEntity<T>> Table<T>.DELETE(clause: WhereClause<T>) {
161+
public infix fun <T> Table<T>.DELETE(clause: WhereClause<T>) {
162162
val statement = Delete.delete(this, databaseConnection, clause)
163163
addStatement(statement)
164164
}
@@ -170,13 +170,13 @@ public class Database(
170170
/**
171171
* Select with no any clause.
172172
*/
173-
public inline infix fun <reified T : DBEntity<T>> Table<T>.SELECT(x: X): FinalSelectStatement<T> =
173+
public inline infix fun <reified T> Table<T>.SELECT(x: X): FinalSelectStatement<T> =
174174
select(getKSerializer(), false)
175175

176-
public inline infix fun <reified T :DBEntity<T>> Table<T>.SELECT_DISTINCT(x: X): FinalSelectStatement<T> =
176+
public inline infix fun <reified T> Table<T>.SELECT_DISTINCT(x: X): FinalSelectStatement<T> =
177177
select(getKSerializer(), true)
178178

179-
public fun <T : DBEntity<T>> Table<T>.select(serializer: KSerializer<T>, isDistinct: Boolean): FinalSelectStatement<T> {
179+
public fun <T> Table<T>.select(serializer: KSerializer<T>, isDistinct: Boolean): FinalSelectStatement<T> {
180180
val container = getSelectStatementGroup()
181181
val statement = Select.select(this, isDistinct, serializer, databaseConnection, container)
182182
addSelectStatement(statement)
@@ -186,13 +186,13 @@ public class Database(
186186
/**
187187
* Receive the 'WHERE' clause.
188188
*/
189-
public inline infix fun <reified T : DBEntity<T>> Table<T>.SELECT(clause: WhereClause<T>): WhereSelectStatement<T> =
189+
public inline infix fun <reified T> Table<T>.SELECT(clause: WhereClause<T>): WhereSelectStatement<T> =
190190
select(getKSerializer(), clause, false)
191191

192-
public inline infix fun <reified T : DBEntity<T>> Table<T>.SELECT_DISTINCT(clause: WhereClause<T>): WhereSelectStatement<T> =
192+
public inline infix fun <reified T> Table<T>.SELECT_DISTINCT(clause: WhereClause<T>): WhereSelectStatement<T> =
193193
select(getKSerializer(), clause, true)
194194

195-
public fun <T : DBEntity<T>> Table<T>.select(serializer: KSerializer<T>, clause: WhereClause<T>, isDistinct: Boolean): WhereSelectStatement<T> {
195+
public fun <T> Table<T>.select(serializer: KSerializer<T>, clause: WhereClause<T>, isDistinct: Boolean): WhereSelectStatement<T> {
196196
val container = getSelectStatementGroup()
197197
val statement = Select.select(this, clause, isDistinct, serializer, databaseConnection, container)
198198
addSelectStatement(statement)
@@ -202,13 +202,13 @@ public class Database(
202202
/**
203203
* Receive the 'ORDER BY' clause.
204204
*/
205-
public inline infix fun <reified T : DBEntity<T>> Table<T>.SELECT(clause: OrderByClause<T>): OrderBySelectStatement<T> =
205+
public inline infix fun <reified T> Table<T>.SELECT(clause: OrderByClause<T>): OrderBySelectStatement<T> =
206206
select(getKSerializer(), clause, false)
207207

208-
public inline infix fun <reified T : DBEntity<T>> Table<T>.SELECT_DISTINCT(clause: OrderByClause<T>): OrderBySelectStatement<T> =
208+
public inline infix fun <reified T> Table<T>.SELECT_DISTINCT(clause: OrderByClause<T>): OrderBySelectStatement<T> =
209209
select(getKSerializer(), clause, true)
210210

211-
public fun <T : DBEntity<T>> Table<T>.select(serializer: KSerializer<T>, clause: OrderByClause<T>, isDistinct: Boolean): OrderBySelectStatement<T> {
211+
public fun <T> Table<T>.select(serializer: KSerializer<T>, clause: OrderByClause<T>, isDistinct: Boolean): OrderBySelectStatement<T> {
212212
val container = getSelectStatementGroup()
213213
val statement = Select.select(this, clause, isDistinct, serializer, databaseConnection, container)
214214
addSelectStatement(statement)
@@ -218,13 +218,13 @@ public class Database(
218218
/**
219219
* Receive the 'LIMIT' clause.
220220
*/
221-
public inline infix fun <reified T : DBEntity<T>> Table<T>.SELECT(clause: LimitClause<T>): LimitSelectStatement<T> =
221+
public inline infix fun <reified T> Table<T>.SELECT(clause: LimitClause<T>): LimitSelectStatement<T> =
222222
select(getKSerializer(), clause, false)
223223

224-
public inline infix fun <reified T : DBEntity<T>> Table<T>.SELECT_DISTINCT(clause: LimitClause<T>): LimitSelectStatement<T> =
224+
public inline infix fun <reified T> Table<T>.SELECT_DISTINCT(clause: LimitClause<T>): LimitSelectStatement<T> =
225225
select(getKSerializer(), clause, true)
226226

227-
public fun <T : DBEntity<T>> Table<T>.select(serializer: KSerializer<T>, clause: LimitClause<T>, isDistinct: Boolean): LimitSelectStatement<T> {
227+
public fun <T> Table<T>.select(serializer: KSerializer<T>, clause: LimitClause<T>, isDistinct: Boolean): LimitSelectStatement<T> {
228228
val container = getSelectStatementGroup()
229229
val statement = Select.select(this, clause, isDistinct, serializer, databaseConnection, container)
230230
addSelectStatement(statement)
@@ -234,20 +234,20 @@ public class Database(
234234
/**
235235
* Receive the 'GROUP BY' clause.
236236
*/
237-
public inline infix fun <reified T : DBEntity<T>> Table<T>.SELECT(clause: GroupByClause<T>): GroupBySelectStatement<T> =
237+
public inline infix fun <reified T> Table<T>.SELECT(clause: GroupByClause<T>): GroupBySelectStatement<T> =
238238
select(getKSerializer(), clause, false)
239239

240-
public inline infix fun <reified T : DBEntity<T>> Table<T>.SELECT_DISTINCT(clause: GroupByClause<T>): GroupBySelectStatement<T> =
240+
public inline infix fun <reified T> Table<T>.SELECT_DISTINCT(clause: GroupByClause<T>): GroupBySelectStatement<T> =
241241
select(getKSerializer(), clause, true)
242242

243-
public fun <T : DBEntity<T>> Table<T>.select(serializer: KSerializer<T>, clause: GroupByClause<T>, isDistinct: Boolean): GroupBySelectStatement<T> {
243+
public fun <T> Table<T>.select(serializer: KSerializer<T>, clause: GroupByClause<T>, isDistinct: Boolean): GroupBySelectStatement<T> {
244244
val container = getSelectStatementGroup()
245245
val statement = Select.select(this, clause, isDistinct, serializer, databaseConnection, container)
246246
addSelectStatement(statement)
247247
return statement
248248
}
249249

250-
public inline fun <reified T : DBEntity<T>> getKSerializer(): KSerializer<T> = EmptySerializersModule().serializer()
250+
public inline fun <reified T> getKSerializer(): KSerializer<T> = EmptySerializersModule().serializer()
251251

252252
/**
253253
* The 'UNION' clause of Select.
@@ -257,7 +257,7 @@ public class Database(
257257

258258
private fun getSelectStatementGroup(): StatementContainer = unionSelectStatementGroupStack.top ?: transactionStatementsGroup ?: executeEngine
259259

260-
public inline fun <T : DBEntity<T>> Table<T>.UNION(block: Table<T>.(Table<T>) -> Unit): FinalSelectStatement<T> {
260+
public inline fun <T> Table<T>.UNION(block: Table<T>.(Table<T>) -> Unit): FinalSelectStatement<T> {
261261
beginUnion<T>()
262262
var selectStatement: SelectStatement<T>? = null
263263
try {
@@ -269,7 +269,7 @@ public class Database(
269269
}
270270
}
271271

272-
public inline fun <T : DBEntity<T>> Table<T>.UNION_ALL(block: Table<T>.(Table<T>) -> Unit): FinalSelectStatement<T> {
272+
public inline fun <T> Table<T>.UNION_ALL(block: Table<T>.(Table<T>) -> Unit): FinalSelectStatement<T> {
273273
beginUnion<T>()
274274
var selectStatement: SelectStatement<T>? = null
275275
try {
@@ -281,16 +281,16 @@ public class Database(
281281
}
282282
}
283283

284-
public fun <T : DBEntity<T>> beginUnion() {
284+
public fun <T> beginUnion() {
285285
unionSelectStatementGroupStack.push(UnionSelectStatementGroup<T>())
286286
}
287287

288-
public fun <T : DBEntity<T>> createUnionSelectStatement(isUnionAll: Boolean): FinalSelectStatement<T> {
288+
public fun <T> createUnionSelectStatement(isUnionAll: Boolean): FinalSelectStatement<T> {
289289
check(unionSelectStatementGroupStack.isNotEmpty) { "Please invoke the 'beginUnion' before you invoke this function!!!" }
290290
return (unionSelectStatementGroupStack.top as UnionSelectStatementGroup<T>).unionStatements(isUnionAll)
291291
}
292292

293-
public fun <T : DBEntity<T>> endUnion(selectStatement: SelectStatement<T>?) {
293+
public fun <T> endUnion(selectStatement: SelectStatement<T>?) {
294294
unionSelectStatementGroupStack.pop()
295295
selectStatement?.let { addSelectStatement(it) }
296296
}
@@ -299,13 +299,13 @@ public class Database(
299299
* Receive the 'JOIN' clause.
300300
*/
301301

302-
public inline infix fun <T : DBEntity<T>, reified R : DBEntity<R>> Table<T>.SELECT(clause: JoinClause<R>): JoinStatementWithoutCondition<R> =
302+
public inline infix fun <T, reified R> Table<T>.SELECT(clause: JoinClause<R>): JoinStatementWithoutCondition<R> =
303303
select(getKSerializer(), clause, false)
304304

305-
public inline infix fun <T : DBEntity<T>, reified R : DBEntity<R>> Table<T>.SELECT_DISTINCT(clause: JoinClause<R>): JoinStatementWithoutCondition<R> =
305+
public inline infix fun <T, reified R> Table<T>.SELECT_DISTINCT(clause: JoinClause<R>): JoinStatementWithoutCondition<R> =
306306
select(getKSerializer(), clause, true)
307307

308-
public fun <T : DBEntity<T>, R : DBEntity<R>> Table<T>.select(serializer: KSerializer<R>, clause: JoinClause<R>, isDistinct: Boolean): JoinStatementWithoutCondition<R> {
308+
public fun <T, R> Table<T>.select(serializer: KSerializer<R>, clause: JoinClause<R>, isDistinct: Boolean): JoinStatementWithoutCondition<R> {
309309
val container = getSelectStatementGroup()
310310
return Select.select(this, clause, isDistinct, serializer, databaseConnection, container, ::addSelectStatement)
311311
}
@@ -314,13 +314,13 @@ public class Database(
314314
* Receive the natural join clause(includes 'NATURAL LEFT OUTER JOIN' and 'NATURAL INNER JOIN').
315315
*/
316316

317-
public inline infix fun <T : DBEntity<T>, reified R : DBEntity<R>> Table<T>.SELECT(clause: NaturalJoinClause<R>): JoinSelectStatement<R> =
317+
public inline infix fun <T, reified R> Table<T>.SELECT(clause: NaturalJoinClause<R>): JoinSelectStatement<R> =
318318
select(getKSerializer(), clause, false)
319319

320-
public inline infix fun <T : DBEntity<T>, reified R : DBEntity<R>> Table<T>.SELECT_DISTINCT(clause: NaturalJoinClause<R>): JoinSelectStatement<R> =
320+
public inline infix fun <T, reified R> Table<T>.SELECT_DISTINCT(clause: NaturalJoinClause<R>): JoinSelectStatement<R> =
321321
select(getKSerializer(), clause, true)
322322

323-
public fun <T : DBEntity<T>, R : DBEntity<R>> Table<T>.select(serializer: KSerializer<R>, clause: NaturalJoinClause<R>, isDistinct: Boolean): JoinSelectStatement<R> {
323+
public fun <T, R> Table<T>.select(serializer: KSerializer<R>, clause: NaturalJoinClause<R>, isDistinct: Boolean): JoinSelectStatement<R> {
324324
val container = getSelectStatementGroup()
325325
val statement = Select.select(this, clause, isDistinct, serializer, databaseConnection, container)
326326
addSelectStatement(statement)

Diff for: sqllin-dsl/src/commonMain/kotlin/com/ctrip/sqllin/dsl/sql/Table.kt

+5-3
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,15 @@
1616

1717
package com.ctrip.sqllin.dsl.sql
1818

19-
import com.ctrip.sqllin.dsl.DBEntity
19+
import kotlinx.serialization.KSerializer
2020

2121
/**
2222
* SQL table
2323
* @author yaqiao
2424
*/
2525

26-
public abstract class Table<T : DBEntity<T>>(
26+
public abstract class Table<T>(
2727
internal val tableName: String,
28-
)
28+
) {
29+
public abstract fun kSerializer(): KSerializer<T>
30+
}

Diff for: sqllin-dsl/src/commonMain/kotlin/com/ctrip/sqllin/dsl/sql/clause/BaseJoinClause.kt

+6-7
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
package com.ctrip.sqllin.dsl.sql.clause
1818

19-
import com.ctrip.sqllin.dsl.DBEntity
2019
import com.ctrip.sqllin.dsl.sql.Table
2120
import com.ctrip.sqllin.dsl.sql.statement.JoinSelectStatement
2221
import com.ctrip.sqllin.dsl.sql.statement.JoinStatementWithoutCondition
@@ -26,7 +25,7 @@ import com.ctrip.sqllin.dsl.sql.statement.JoinStatementWithoutCondition
2625
* @author yaqiao
2726
*/
2827

29-
public sealed class BaseJoinClause<R : DBEntity<R>>(private vararg val tables: Table<*>) : SelectClause<R> {
28+
public sealed class BaseJoinClause<R>(private vararg val tables: Table<*>) : SelectClause<R> {
3029

3130
internal abstract val clauseName: String
3231

@@ -41,15 +40,15 @@ public sealed class BaseJoinClause<R : DBEntity<R>>(private vararg val tables: T
4140
}
4241
}
4342

44-
public sealed class NaturalJoinClause<R : DBEntity<R>>(vararg tables: Table<*>) : BaseJoinClause<R>(*tables)
43+
public sealed class NaturalJoinClause<R>(vararg tables: Table<*>) : BaseJoinClause<R>(*tables)
4544

46-
public sealed class JoinClause<R : DBEntity<R>>(vararg tables: Table<*>) : BaseJoinClause<R>(*tables)
45+
public sealed class JoinClause<R>(vararg tables: Table<*>) : BaseJoinClause<R>(*tables)
4746

48-
public infix fun <R : DBEntity<R>> JoinStatementWithoutCondition<R>.ON(condition: SelectCondition): JoinSelectStatement<R> =
47+
public infix fun <R> JoinStatementWithoutCondition<R>.ON(condition: SelectCondition): JoinSelectStatement<R> =
4948
convertToJoinSelectStatement(condition)
5049

51-
public inline infix fun <R : DBEntity<R>> JoinStatementWithoutCondition<R>.USING(clauseElement: ClauseElement): JoinSelectStatement<R> =
50+
public inline infix fun <R> JoinStatementWithoutCondition<R>.USING(clauseElement: ClauseElement): JoinSelectStatement<R> =
5251
USING(listOf(clauseElement))
5352

54-
public infix fun <R : DBEntity<R>> JoinStatementWithoutCondition<R>.USING(clauseElements: Iterable<ClauseElement>): JoinSelectStatement<R> =
53+
public infix fun <R> JoinStatementWithoutCondition<R>.USING(clauseElements: Iterable<ClauseElement>): JoinSelectStatement<R> =
5554
convertToJoinSelectStatement(clauseElements)

Diff for: sqllin-dsl/src/commonMain/kotlin/com/ctrip/sqllin/dsl/sql/clause/Clause.kt

+1-3
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,9 @@
1616

1717
package com.ctrip.sqllin.dsl.sql.clause
1818

19-
import com.ctrip.sqllin.dsl.DBEntity
20-
2119
/**
2220
* Abstract clause, include 'where', 'update set' and more
2321
* @author yaqiao
2422
*/
2523

26-
public sealed interface Clause<T : DBEntity<T>>
24+
public sealed interface Clause<T>

0 commit comments

Comments
 (0)