summaryrefslogtreecommitdiff
path: root/database
diff options
context:
space:
mode:
Diffstat (limited to 'database')
-rw-r--r--database/README.md13
-rw-r--r--database/rebuild-database.py31
-rw-r--r--database/schema.sql14
-rw-r--r--database/view-table.py17
4 files changed, 72 insertions, 3 deletions
diff --git a/database/README.md b/database/README.md
new file mode 100644
index 00000000..9fba2d5c
--- /dev/null
+++ b/database/README.md
@@ -0,0 +1,13 @@
+# OpenDC Database
+
+To rebuild the database at a location (or in this directory if none is specified):
+
+```bash
+python rebuild-database.py "path/to/database/directory"
+```
+
+To view a table in the database:
+
+```bash
+python view-table.py "path/to/database/directory" table_name
+```
diff --git a/database/rebuild-database.py b/database/rebuild-database.py
new file mode 100644
index 00000000..6e10b646
--- /dev/null
+++ b/database/rebuild-database.py
@@ -0,0 +1,31 @@
+import os
+import sqlite3
+import sys
+
+sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
+
+try:
+ BASE_DIR = directory_name=sys.argv[1]
+except:
+ BASE_DIR = os.path.dirname(os.path.abspath(__file__))
+db_location = os.path.join(BASE_DIR, 'opendc.db')
+
+print "Removing old database..."
+os.remove(db_location)
+
+print "Connecting to new database..."
+conn = sqlite3.connect(db_location)
+c = conn.cursor()
+
+print "Importing schema..."
+with open('schema.sql') as schema:
+ c.executescript(schema.read())
+
+print "Importing test data..."
+with open('test.sql') as test:
+ c.executescript(test.read())
+
+conn.commit()
+conn.close()
+
+print "Done."
diff --git a/database/schema.sql b/database/schema.sql
index ef67a8b0..bb066328 100644
--- a/database/schema.sql
+++ b/database/schema.sql
@@ -36,7 +36,9 @@ CREATE UNIQUE INDEX authorizations_index ON authorizations (
CREATE TABLE IF NOT EXISTS authorization_levels (
level TEXT PRIMARY KEY NOT NULL
);
-INSERT INTO authorization_levels (level) VALUES ("OWN"), ("EDIT"), ("VIEW");
+INSERT INTO authorization_levels (level) VALUES ("OWN");
+INSERT INTO authorization_levels (level) VALUES ("EDIT");
+INSERT INTO authorization_levels (level) VALUES ("VIEW");
/*
* A Simulation has several Paths, which define the topology of the datacenter at different times. A Simulation also
@@ -209,7 +211,11 @@ CREATE TABLE IF NOT EXISTS rooms (
CREATE TABLE IF NOT EXISTS room_types (
name TEXT PRIMARY KEY NOT NULL
);
-INSERT INTO room_types (name) VALUES ('SERVER'), ('HALLWAY'), ('OFFICE'), ('POWER'), ('COOLING');
+INSERT INTO room_types (name) VALUES ('SERVER');
+INSERT INTO room_types (name) VALUES ('HALLWAY');
+INSERT INTO room_types (name) VALUES ('OFFICE');
+INSERT INTO room_types (name) VALUES ('POWER');
+INSERT INTO room_types (name) VALUES ('COOLING');
/*
* A room consists of tiles that have a quantized (x,y) position. The same tile can't be in multiple rooms. All tiles
@@ -297,7 +303,9 @@ CREATE TABLE IF NOT EXISTS objects (
CREATE TABLE IF NOT EXISTS object_types (
name TEXT PRIMARY KEY NOT NULL
);
-INSERT INTO object_types (name) VALUES ('PSU'), ('COOLING_ITEM'), ('RACK');
+INSERT INTO object_types (name) VALUES ('PSU');
+INSERT INTO object_types (name) VALUES ('COOLING_ITEM');
+INSERT INTO object_types (name) VALUES ('RACK');
-- Allowed objects table
CREATE TABLE IF NOT EXISTS allowed_objects (
diff --git a/database/view-table.py b/database/view-table.py
new file mode 100644
index 00000000..615b4081
--- /dev/null
+++ b/database/view-table.py
@@ -0,0 +1,17 @@
+import os
+import sqlite3
+import sys
+
+try:
+ BASE_DIR = directory_name=sys.argv[1]
+except:
+ BASE_DIR = os.path.dirname(os.path.abspath(__file__))
+db_location = os.path.join(BASE_DIR, 'opendc.db')
+
+conn = sqlite3.connect(db_location)
+c = conn.cursor()
+
+rows = c.execute('SELECT * FROM ' + sys.argv[2])
+
+for row in rows:
+ print row