annot-server/models.py
changeset 0 e1d4d7a8255a
child 22 986ee928a866
equal deleted inserted replaced
-1:000000000000 0:e1d4d7a8255a
       
     1 
       
     2 #
       
     3 # See LICENCE for detail
       
     4 # Copyright (c) 2014 IRI
       
     5 #
       
     6 
       
     7 import datetime
       
     8 import json
       
     9 import uuid
       
    10 
       
    11 def get_table_create_stmt():
       
    12     return (
       
    13         "CREATE TABLE IF NOT EXISTS annotations ( "
       
    14         "id serial PRIMARY KEY, "
       
    15         "uuid uuid UNIQUE, "
       
    16         "created timestamp default (now() at time zone 'utc') NOT NULL, "
       
    17         "ts timestamptz NOT NULL, "
       
    18         "event varchar(255) NOT NULL, "
       
    19         "channel varchar(255) NOT NULL, "
       
    20         "content json);"
       
    21     )
       
    22 
       
    23 def insert_annot_async(params, conn):
       
    24 
       
    25     content = params.get('content', {})
       
    26     if not isinstance(content, basestring):
       
    27         params['content'] = json.dumps(content)
       
    28     if 'uuid' not in params:
       
    29         params['uuid'] = uuid.uuid4()
       
    30 
       
    31     if 'ts' not in params:
       
    32         params['ts'] = datetime.utcnow()
       
    33 
       
    34     defer = conn.runOperation("INSERT INTO annotations (uuid, ts, event, channel, content) VALUES (%(uuid)s, %(ts)s, %(event)s, %(channel)s, %(content)s)", params)
       
    35     defer.addCallback(lambda _: params)
       
    36 
       
    37     return defer