--- a/pvl/verkko/db.py Thu Jul 04 03:49:55 2013 +0300
+++ b/pvl/verkko/db.py Fri Jul 05 00:59:36 2013 +0300
@@ -48,6 +48,23 @@
Column('next', String, nullable=True),
)
+wlan_sta = Table('wlan_sta', metadata,
+ Column('id', Integer, primary_key=True),
+
+ Column('ap', String, nullable=False),
+ Column('wlan', String, nullable=False),
+ Column('sta', String, nullable=False),
+
+ # updated
+ Column('first_seen', DateTime, nullable=False),
+ Column('last_seen', DateTime, nullable=False),
+
+ Column('count', Integer, default=1),
+ Column('msg', String, nullable=True),
+
+ UniqueConstraint('ap', 'wlan', 'sta'),
+)
+
# for ORM models
from sqlalchemy.orm import mapper, sessionmaker
@@ -116,3 +133,35 @@
return result.rowcount
+# command-line
+import optparse
+import sys
+
+def parser (parser, table=None) :
+ parser.set_defaults(
+ create_table = table,
+ )
+ parser = optparse.OptionGroup(parser, "Verkko Database")
+ parser.add_option('--database', metavar='URI',
+ help="Connect to given database")
+
+ if table is not None :
+ parser.add_option('--create', action='store_true',
+ help="Initialize database")
+
+ return parser
+
+def apply (options, required=True) :
+ # db
+ if not options.database and required :
+ log.error("No database given")
+ sys.exit(1)
+
+ log.info("Open up database: %s", options.database)
+ db = Database(options.database)
+
+ if options.create_table is not None and options.create :
+ log.info("Creating database tables: %s", options.create_table)
+ options.create_table.create(db.engine, checkfirst=True)
+
+ return db