equal
deleted
inserted
replaced
41 |
41 |
42 /* types */ |
42 /* types */ |
43 |
43 |
44 object Type extends Enumeration |
44 object Type extends Enumeration |
45 { |
45 { |
|
46 val Boolean = Value("BOOLEAN") |
46 val Int = Value("INTEGER") |
47 val Int = Value("INTEGER") |
47 val Long = Value("BIGINT") |
48 val Long = Value("BIGINT") |
48 val Double = Value("DOUBLE PRECISION") |
49 val Double = Value("DOUBLE PRECISION") |
49 val String = Value("TEXT") |
50 val String = Value("TEXT") |
50 val Bytes = Value("BLOB") |
51 val Bytes = Value("BLOB") |
56 |
57 |
57 /* columns */ |
58 /* columns */ |
58 |
59 |
59 object Column |
60 object Column |
60 { |
61 { |
|
62 def bool(name: String, strict: Boolean = true, primary_key: Boolean = false): Column[Boolean] = |
|
63 new Column_Boolean(name, strict, primary_key) |
61 def int(name: String, strict: Boolean = true, primary_key: Boolean = false): Column[Int] = |
64 def int(name: String, strict: Boolean = true, primary_key: Boolean = false): Column[Int] = |
62 new Column_Int(name, strict, primary_key) |
65 new Column_Int(name, strict, primary_key) |
63 def long(name: String, strict: Boolean = true, primary_key: Boolean = false): Column[Long] = |
66 def long(name: String, strict: Boolean = true, primary_key: Boolean = false): Column[Long] = |
64 new Column_Long(name, strict, primary_key) |
67 new Column_Long(name, strict, primary_key) |
65 def double(name: String, strict: Boolean = true, primary_key: Boolean = false): Column[Double] = |
68 def double(name: String, strict: Boolean = true, primary_key: Boolean = false): Column[Double] = |
95 } |
98 } |
96 |
99 |
97 override def toString: String = sql_decl(default_type_name) |
100 override def toString: String = sql_decl(default_type_name) |
98 } |
101 } |
99 |
102 |
|
103 class Column_Boolean private[SQL](name: String, strict: Boolean, primary_key: Boolean) |
|
104 extends Column[Boolean](name, strict, primary_key, Type.Boolean) |
|
105 { |
|
106 def apply(rs: ResultSet): Boolean = rs.getBoolean(name) |
|
107 } |
|
108 |
100 class Column_Int private[SQL](name: String, strict: Boolean, primary_key: Boolean) |
109 class Column_Int private[SQL](name: String, strict: Boolean, primary_key: Boolean) |
101 extends Column[Int](name, strict, primary_key, Type.Int) |
110 extends Column[Int](name, strict, primary_key, Type.Int) |
102 { |
111 { |
103 def apply(rs: ResultSet): Int = rs.getInt(name) |
112 def apply(rs: ResultSet): Int = rs.getInt(name) |
104 } |
113 } |
201 |
210 |
202 trait Database |
211 trait Database |
203 { |
212 { |
204 /* types */ |
213 /* types */ |
205 |
214 |
206 def type_name(t: Type.Value): String = default_type_name(t) |
215 def type_name(t: Type.Value): String |
207 |
216 |
208 |
217 |
209 /* connection */ |
218 /* connection */ |
210 |
219 |
211 def connection: Connection |
220 def connection: Connection |
275 } |
284 } |
276 |
285 |
277 class Database private[SQLite](name: String, val connection: Connection) extends SQL.Database |
286 class Database private[SQLite](name: String, val connection: Connection) extends SQL.Database |
278 { |
287 { |
279 override def toString: String = name |
288 override def toString: String = name |
|
289 |
|
290 def type_name(t: SQL.Type.Value): String = |
|
291 if (t == SQL.Type.Boolean) "INTEGER" |
|
292 else SQL.default_type_name(t) |
280 |
293 |
281 def rebuild { using(statement("VACUUM"))(_.execute()) } |
294 def rebuild { using(statement("VACUUM"))(_.execute()) } |
282 } |
295 } |
283 } |
296 } |
284 |
297 |
328 name: String, val connection: Connection, port_forwarding: Option[SSH.Port_Forwarding]) |
341 name: String, val connection: Connection, port_forwarding: Option[SSH.Port_Forwarding]) |
329 extends SQL.Database |
342 extends SQL.Database |
330 { |
343 { |
331 override def toString: String = name |
344 override def toString: String = name |
332 |
345 |
333 override def type_name(t: SQL.Type.Value): String = |
346 def type_name(t: SQL.Type.Value): String = |
334 if (t == SQL.Type.Bytes) "BYTEA" |
347 if (t == SQL.Type.Bytes) "BYTEA" |
335 else SQL.default_type_name(t) |
348 else SQL.default_type_name(t) |
336 |
349 |
337 override def close() { super.close; port_forwarding.foreach(_.close) } |
350 override def close() { super.close; port_forwarding.foreach(_.close) } |
338 } |
351 } |