import sqlite3

def initDB(dbname):
    initsql = """
        PRAGMA foreign_keys = ON;

        CREATE TABLE IF NOT EXISTS obj (
            id INTEGER PRIMARY KEY,
            x INTEGER NOT NULL,
            y INTEGER NOT NULL,
            z INTEGER NOT NULL,
            vx INTEGER NOT NULL,
            vy INTEGER NOT NULL,
            vz INTEGER NOT NULL,
            mass INTEGER NOT NULL,
            size INTEGER NOT NULL
        );

        CREATE TABLE IF NOT EXISTS planet (
            id INTEGER PRIMARY KEY,
            name TEXT NOT NULL,
            objid INTEGER REFERENCES obj(id) ON DELETE CASCADE
        );

        CREATE TABLE IF NOT EXISTS ship (
            id INTEGER PRIMARY KEY,
            name TEXT NOT NULL,
            objid INTEGER REFERENCES obj(id) ON DELETE CASCADE NOT NULL,
            fuel INTEGER NOT NULL
        );
    """
    conn = sqlite3.connect(dbname)
    conn.executescript(initsql)
    return conn



import unittest
class testDB(unittest.TestCase):
    def setUp(self):
        self.conn = initDB(':memory:')
        initsql = """
            INSERT INTO obj(x,y,z,vx,vy,vz,mass,size)
            VALUES (0,0,0,0,0,0,1000000,1000);
            INSERT INTO planet(name,objid)
            VALUES ('PLANET',last_insert_rowid());

            INSERT INTO obj(x,y,z,vx,vy,vz,mass,size)
            VALUES (2000,2000,2000,0,0,0,10,1);
            INSERT INTO ship(name,objid,fuel)
            VALUES('SHIP',last_insert_rowid(),1000);
        """
        self.conn.executescript(initsql)

    def test_db(self):
        pass

if __name__ == '__main__':
    unittest.main()
    #conn = initDB(':MEMORY:')
    #testDB(conn)
