Skip to content

Instantly share code, notes, and snippets.

@Cynede
Created November 1, 2012 12:14
Show Gist options
  • Save Cynede/3993302 to your computer and use it in GitHub Desktop.
Save Cynede/3993302 to your computer and use it in GitHub Desktop.
FsSql <3
[<AllowNullLiteral>]
type SQLite() =
let dbexist = File.Exists(NSettings.dbpath)
let connSetting = sprintf "Data Source=%s;Version=3;New=%s;Compress=True;"
<| NSettings.dbpath
<| if (dbexist) then "False" else "True"
let openConn() =
let conn = new SQLiteConnection(connSetting)
conn.Open()
conn :> IDbConnection
let connMgr = Sql.withNewConnection openConn
let exec a = Sql.execNonQuery(connMgr) a [] |> ignore
let P = Sql.Parameter.make
let getNode (dr: IDataRecord) =
let date, value = (dr?date).Value
(dr?value).Value
new dbNode(date, value)
do
if not dbexist then
exec "CREATE TABLE \"archive\" ( \"date\" INTEGER, \"value\" INTEGER)"
exec "CREATE TABLE \"instant\" ( \"date\" INTEGER, \"value\" INTEGER)"
member X.execute q = exec q
member X.query q =
Sql.execReader(connMgr) q []
|> Seq.ofDataReader
|> Seq.map getNode
|> Seq.toArray
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment