]> git.plutz.net Git - tabnote/blob - tabserver
tabserver untestet, initial commit
[tabnote] / tabserver
1 #!/usr/bin/python
2 #encoding: utf-8
3
4 import pysqlite2.dbapi2 as dbapi
5 import SimpleXMLRPCServer.CGIXMLRPCRequestHandler as rpcHandler
6
7 sql = None
8
9 rpc = rpcHandler()
10 rpc.register_function(quickIndex)
11 rpc.register_function(setRecord)
12 rpc.register_function(getRecord)
13 rpc.register_function(delRecord)
14 initDB()
15 rpc.handle_request()
16 closeDB()
17
18
19 def initDB():
20   sql = dbapi.connect('noteDB.sqlite').cursor()
21
22   try:
23     sql.execute('CREATE TABLE meta (key TEXT, value TEXT, UNIQUE (uuid));')
24     sql.execute('INSERT INTO meta (key, value) VALUES ("version", "1.6db");')
25     sql.execute('CREATE TABLE notes (uuid TEXT PRIMARY KEY, seq INTEGER, label TEXT, ' +
26                 'content TEXT, revision DATETIME, UNIQE (uuid));')
27   except: pass
28
29 def closeDB()
30   db = sql.connection
31   sql.close()
32   db.commit()
33   db.close()
34
35 def escape(string):
36   """
37   Return sanitized string for use in SQL-Statements
38   """
39   ret = ''
40   for c in string:
41     if c == '"': ret += '""'
42     else: ret += c
43   return ret
44
45 def quickIndex():
46   sql.execute('SELECT uuid, revision FROM notes')
47   return sql.fetchall()
48
49 def delRecord(uuid):
50   sql.excute('DELETE FROM notes WHERE uuid = "' + escape(uuid) + '";')
51
52 def setRecord(uuid, seq, label, content, revision):
53   uuid = escape(uuid)
54   seq = int(seq)
55   label = escape(label)
56   content = escape(content)
57   revision = escape(revision)
58   try:
59     sql.execute('INSERT INTO notes (uuid, seq, label, content, revision) VALUES ' +
60                 '"' + uuid + '", ' + seq + ', "' + label + '", "' + content +
61                 '", datetime(\'' + revision + '\')')
62   except:
63     sql.execute('UPDATE notes SET seq = ' + seq + ', label = "' + label + '", content = "' + content +
64                 '", revision = "' + revision + '" WHERE uuid = datetime(\'' + revision + '\');')
65
66 def getRecord(uuid):
67   uuid = escape(uuid)
68   sql.execute('SELECT uuid, seq, label, content, revision FROM notes WHERE uuid = "' + uuid + '";')
69
70
71
72
73
74
75
76
77