61 lines
2.1 KiB
Nim
61 lines
2.1 KiB
Nim
import # nim libs
|
|
json, options, strutils, strformat
|
|
|
|
import # vendor libs
|
|
sqlcipher, json_serialization, json_serialization/[reader, writer, lexer]
|
|
|
|
type
|
|
MailserverType* {.pure.} = enum
|
|
Id = "id",
|
|
Name = "name",
|
|
Address = "address",
|
|
Password = "password",
|
|
Fleet = "fleet"
|
|
|
|
MailserversCol* {.pure.} = enum
|
|
Id = "id",
|
|
Name = "name",
|
|
Address = "address",
|
|
Password = "password",
|
|
Fleet = "fleet"
|
|
|
|
Mailserver* {.dbTableName("mailservers").} = object
|
|
id* {.serializedFieldName($MailserverType.Id), dbColumnName($MailserversCol.Id).}: string
|
|
name* {.serializedFieldName($MailserverType.Name), dbColumnName($MailserversCol.Name).}: string
|
|
address* {.serializedFieldName($MailserverType.Address), dbColumnName($MailserversCol.Address).}: string
|
|
password* {.serializedFieldName($MailserverType.Password), dbColumnName($MailserversCol.Password).}: Option[string]
|
|
fleet* {.serializedFieldName($MailserverType.Fleet), dbColumnName($MailserversCol.Fleet).}: string
|
|
|
|
proc deleteMailserver*(db: DbConn, mailserver: Mailserver) =
|
|
let query = fmt"""
|
|
DELETE FROM mailservers WHERE id = ?
|
|
"""
|
|
db.exec(query, mailserver.id)
|
|
|
|
proc getMailservers*(db: DbConn): seq[Mailserver] =
|
|
let query = """
|
|
SELECT id, name, address, password, fleet FROM mailservers
|
|
"""
|
|
db.all(Mailserver, query)
|
|
|
|
proc saveMailserver*(db: DbConn, mailserver: Mailserver) =
|
|
let query = fmt"""
|
|
INSERT INTO mailservers(
|
|
{$MailserversCol.Id},
|
|
{$MailserversCol.Name},
|
|
{$MailserversCol.Address},
|
|
{$MailserversCol.Password},
|
|
{$MailserversCol.Fleet})
|
|
VALUES (?, ?, ?, ?, ?)
|
|
"""
|
|
db.exec(query,
|
|
mailserver.id,
|
|
mailserver.name,
|
|
mailserver.address,
|
|
(if mailserver.password.isSome(): mailserver.password.get() else: ""),
|
|
mailserver.fleet)
|
|
|
|
proc saveMailservers*(db: DbConn, mailservers: seq[Mailserver]) =
|
|
for mailserver in mailservers:
|
|
db.saveMailserver(mailserver)
|