mschieder@442: #!/usr/bin/env python3
bernhard@454: """ Create test data for getan (getan_test_data.db).
mschieder@450: 
bernhard@454: Please delete existing getan_test_data.db.
bernhard@454: Execute getan_test_data.py to get the test database getan_test_data.db.
bernhard@454: Open getan with getan_test_data.db: getan /path/getan_test_data.db
mschieder@450: 
bernhard@454: (c) 2018 Intevation GmbH
bernhard@454: Author: Magnus Schieder <magnus.schieder@intevation.de>
bernhard@454: 
bernhard@454: This is Free Software licensed under the terms of GPLv3 or later.
bernhard@454: For details see LICENSE coming with the source of 'getan'.
mschieder@450: """
mschieder@442: import sqlite3
mschieder@442: 
mschieder@442: 
mschieder@442: def main():
mschieder@442: 
mschieder@442:     conn = sqlite3.connect("getan_test_data.db")
mschieder@442: 
mschieder@442:     db = conn.cursor()
mschieder@442: 
mschieder@442:     # create getan schema.
mschieder@442:     db.execute('''CREATE TABLE projects (
mschieder@442:             id          INTEGER PRIMARY KEY AUTOINCREMENT,
mschieder@442:             key         VARCHAR(16) NOT NULL CONSTRAINT unique_key UNIQUE,
mschieder@442:             description VARCHAR(256),
mschieder@442:             active      BOOLEAN DEFAULT 1)
mschieder@442:             ''')
mschieder@442: 
mschieder@442:     db.execute('''CREATE TABLE entries (
mschieder@442:             id          INTEGER PRIMARY KEY AUTOINCREMENT,
mschieder@442:             project_id  INTEGER REFERENCES projects(id),
mschieder@442:             start_time  TIMESTAMP NOT NULL,
mschieder@442:             stop_time   TIMESTAMP NOT NULL,
mschieder@442:             description VARCHAR(256),
mschieder@442: 
mschieder@442:             CHECK (strftime('%s', start_time) <= strftime('%s', stop_time)))
mschieder@442:             ''')
mschieder@442: 
mschieder@499:     db.execute('''CREATE TABLE recover (
mschieder@499:             id          INTEGER PRIMARY KEY,
mschieder@499:             project_id  INTEGER REFERENCES projects(id),
mschieder@499:             start_time  TIMESTAMP NOT NULL,
mschieder@499:             stop_time   TIMESTAMP NOT NULL,
mschieder@499:             description VARCHAR(256),
mschieder@499: 
mschieder@499:             CHECK (strftime('%s', start_time) <= strftime('%s', stop_time)))
mschieder@499:             ''')
mschieder@499: 
mschieder@442:     # List of projects.
mschieder@442:     # (key, 'description')
mschieder@442:     pro = [
mschieder@442:         (1, 'pro1'),
mschieder@442:         (2, 'pro2'),
mschieder@442:         (3, 'pro3'),
mschieder@442:         ]
mschieder@442: 
mschieder@442:     # List of entries with test data.
mschieder@442:     # (project_id, 'start_time', 'stop_time', 'description')
mschieder@442:     ent = [
mschieder@442:         (2, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent9'),
mschieder@442:         (2, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent8'),
mschieder@442:         (2, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent7'),
mschieder@442:         (1, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent6'),
mschieder@442:         (1, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent5'),
mschieder@442:         (1, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent4'),
mschieder@442:         (1, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent3'),
mschieder@442:         (1, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent2'),
mschieder@442:         (1, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent1'),
mschieder@442:         ]
mschieder@442: 
mschieder@442:     db.executemany("INSERT INTO projects(key, description) VALUES (?,?)", pro)
mschieder@442: 
mschieder@442:     db.executemany('''INSERT INTO entries(project_id, start_time, stop_time,
mschieder@442:                     description) VALUES (?,?,?,?)''', ent)
mschieder@442: 
mschieder@442:     conn.commit()
mschieder@442:     conn.close()
mschieder@450:     print("getan_test_data.db was created.")
mschieder@442: 
bernhard@454: 
mschieder@442: if __name__ == '__main__':
mschieder@442:     main()