@@ -21,8 +21,7 @@ trait JdbcDatabaseDialect {
21
21
def limitClause (limit : Int , offset : Int ): String
22
22
def insertOrReplace (
23
23
table : String ,
24
- colsToInsert : Seq [String ],
25
- colsToReplace : Seq [String ],
24
+ cols : Seq [String ],
26
25
keyCol : String ): Option [String ] = None
27
26
}
28
27
@@ -35,44 +34,41 @@ class GenericDatabaseDialect extends JdbcDatabaseDialect {
35
34
class SQLiteDatabaseDialect extends GenericDatabaseDialect {
36
35
override def insertOrReplace (
37
36
table : String ,
38
- colsToInsert : Seq [String ],
39
- colsToReplace : Seq [String ],
37
+ cols : Seq [String ],
40
38
keyCol : String ): Option [String ] = {
41
39
Some (
42
40
s """
43
- |INSERT OR REPLACE INTO $table ( ${colsToInsert .mkString(" ," )})
44
- |VALUES ( ${colsToInsert .map(_ => " ?" ).mkString(" ," )})
41
+ |INSERT OR REPLACE INTO $table ( ${cols .mkString(" ," )})
42
+ |VALUES ( ${cols .map(_ => " ?" ).mkString(" ," )})
45
43
| """ .stripMargin)
46
44
}
47
45
}
48
46
class MySQLDatabaseDialect extends GenericDatabaseDialect {
49
47
override def insertOrReplace (
50
48
table : String ,
51
- colsToInsert : Seq [String ],
52
- colsToReplace : Seq [String ],
49
+ cols : Seq [String ],
53
50
keyCol : String ): Option [String ] = {
54
51
Some (
55
52
s """
56
- |INSERT INTO $table ( ${colsToInsert .mkString(" ," )})
57
- |VALUES ( ${colsToInsert .map(_ => " ?" ).mkString(" ," )}) AS new
53
+ |INSERT INTO $table ( ${cols .mkString(" ," )})
54
+ |VALUES ( ${cols .map(_ => " ?" ).mkString(" ," )}) AS new
58
55
|ON DUPLICATE KEY UPDATE
59
- | ${colsToReplace .map(c => s " $c = new. $c" ).mkString(" ," )}
56
+ | ${cols.filterNot(_ == keyCol) .map(c => s " $c = new. $c" ).mkString(" ," )}
60
57
| """ .stripMargin)
61
58
}
62
59
}
63
60
class PostgreSQLDatabaseDialect extends GenericDatabaseDialect {
64
61
override def insertOrReplace (
65
62
table : String ,
66
- colsToInsert : Seq [String ],
67
- colsToReplace : Seq [String ],
63
+ cols : Seq [String ],
68
64
keyCol : String ): Option [String ] = {
69
65
Some (
70
66
s """
71
- |INSERT INTO $table ( ${colsToInsert .mkString(" ," )})
72
- |VALUES ( ${colsToInsert .map(_ => " ?" ).mkString(" ," )})
67
+ |INSERT INTO $table ( ${cols .mkString(" ," )})
68
+ |VALUES ( ${cols .map(_ => " ?" ).mkString(" ," )})
73
69
|ON CONFLICT ( $keyCol)
74
70
|DO UPDATE SET
75
- | ${colsToReplace .map(c => s " $c = EXCLUDED. $c" ).mkString(" ," )}
71
+ | ${cols.filterNot(_ == keyCol) .map(c => s " $c = EXCLUDED. $c" ).mkString(" ," )}
76
72
| """ .stripMargin)
77
73
}
78
74
}
0 commit comments