
#
# See LICENCE for detail
# Copyright (c) 2014 IRI
#

import os.path
import sys

import psycopg2.extras

from twisted.application import service
from twisted.internet import reactor
from twisted.python import log
from txpostgres import txpostgres

from annotserver import make_service
import config
from database import create_connection_pool, init_db, db_session


psycopg2.extras.register_uuid()


init_db()
conn, d = create_connection_pool(config.CONN_STR)
#to do treat error
#d.addCallback(lambda _: conn.runOperation(get_table_create_stmt()))

#TOODO Log
#log.startLogging(sys.stdout)


application = service.Application("annot-server")

annotserver = make_service(conn)
annotserver.setServiceParent(service.IServiceCollection(application))

reactor.addSystemEventTrigger('before', 'shutdown', lambda: db_session.remove())
