@@ -3,31 +3,27 @@ package sniper
3
3
import com .augustnagro .magnum .*
4
4
5
5
case class SnippetAttributes (
6
- description : String ,
7
- uid : Option [String ] = None
6
+ description : String
8
7
)
9
8
10
9
@ Table (SqliteDbType , SqlNameMapper .CamelToSnakeCase )
11
10
case class Snippet (
12
11
@ Id id : Long ,
13
- description : String ,
14
- uid : Option [String ]
12
+ description : String
15
13
) derives DbCodec
16
14
17
15
case class SnippetFileAttributes (
18
16
snippetId : Long ,
19
17
filename : String ,
20
- code : String ,
21
- uid : Option [String ] = None
18
+ code : String
22
19
)
23
20
24
21
@ Table (SqliteDbType , SqlNameMapper .CamelToSnakeCase )
25
22
case class SnippetFile (
26
23
@ Id id : Long ,
27
24
snippetId : Long ,
28
25
filename : String ,
29
- code : String ,
30
- uid : Option [String ]
26
+ code : String
31
27
) derives DbCodec
32
28
33
29
object SnippetFile :
@@ -47,18 +43,7 @@ class SnippetsDB private (using DbCon):
47
43
48
44
def add (attrs : SnippetAttributes ): Snippet =
49
45
val rand = randomString()
50
- snippetsRepo.insert(
51
- attrs.copy(uid = Some (rand))
52
- )
53
- // TODO: when sqlite-jdbc-native supports prepared statements with returning,
54
- // remove uid and all logic surrounding it
55
- val id = sql " select id from snippet where uid = $rand"
56
- .query[Long ]
57
- .run()
58
- .headOption
59
- .getOrElse(sys.error(" Snippet not found" ))
60
-
61
- snippetsRepo.findById(id).getOrElse(sys.error(" Snippet not found" ))
46
+ snippetsRepo.insertReturning(attrs)
62
47
end add
63
48
64
49
def delete (id : Long ) =
@@ -75,23 +60,11 @@ class SnippetsDB private (using DbCon):
75
60
snippetId : Long ,
76
61
files : Map [String , String ]
77
62
): Vector [SnippetFile ] =
78
- val sorted = files.toList.sortBy(_._1)
79
- val uids = Vector .newBuilder[String ]
80
-
63
+ val sorted = files.toVector.sortBy(_._1)
81
64
sorted.map { case (filename, code) =>
82
65
val attrs = SnippetFileAttributes (snippetId, filename, code)
83
- val uid = randomString()
84
- uids += uid
85
- snippetFilesRepo.insert(attrs.copy(uid = Some (uid)))
66
+ snippetFilesRepo.insertReturning(attrs)
86
67
}
87
-
88
- // TODO: figure out how to do IN(...) queries
89
- uids.result.map: uid =>
90
- sql " select ${SnippetFile .Table .all} from ${SnippetFile .Table } where uid = $uid"
91
- .query[SnippetFile ]
92
- .run()
93
- .headOption
94
- .getOrElse(sys.error(" Snippet file not found" ))
95
68
end addFilesToSnippet
96
69
end SnippetsDB
97
70
0 commit comments