#!/usr/bin/env python

import sys, MySQLdb

if len(sys.argv) < 3:
    raise SystemExit('Usage: clear <database-name> <entry-names or *>')

db = MySQLdb.Connection(db=sys.argv[1])

def query(q):
    print '>', q
    c = db.cursor()
    c.execute(q)
    return c.fetchall()

def biodatabase(name):
    q = "select * from biodatabase where name='%s'" % name
    ids = [id for (id, name, auth, desc) in query(q)]
    if ids: return ids[0]

def bioentries(dbid):
    q = "select * from bioentry where biodatabase_id='%s'" % dbid
    return [row[0] for row in query(q)]

def bioentry(name):
    q = "select * from bioentry where name='%s'" % name
    ids = [row[0] for row in query(q)]
    if ids: return ids[0]

databases = []
entries = []
for arg in sys.argv[2:]:
    if arg == '*':
        query('set foreign_key_checks = 0')
        for (table,) in query('show tables'):
            query('delete from ' + table)
        query('set foreign_key_checks = 1')
        sys.exit()
    if arg.endswith('.*'):
        dbid = biodatabase(arg[:-2])
        databases.append(dbid)
        entries += bioentries(dbid)
    else: 
        entries.append(bioentry(arg))

for entry in entries:
    for table in 'bioentry bioentry_dbxref bioentry_qualifier_value bioentry_reference biosequence comment seqfeature'.split():
        query("delete from %s where bioentry_id='%s'" % (table, entry))

for dbid in databases:
    query("delete from biodatabase where biodatabase_id='%s'" % dbid)
