#!/usr/bin/env python3

""" Script for creating the SQLite database. """

import os
import sqlite3
import sys

SQL = """

CREATE TABLE DICTIONARIES (
    DI_DICT        TEXT UNIQUE NOT NULL,
    DI_SIGIL_S     TEXT UNIQUE NOT NULL,
    DI_SIGIL_C     TEXT UNIQUE NOT NULL,
    DI_SHORT_DESCR TEXT,
    DI_LONG_DESCR  TEXT,
    PRIMARY KEY (DI_DICT));

CREATE TABLE DEFINITIONS (
    DF_DICT        TEXT NOT NULL,
    DF_FORM1       TEXT NOT NULL,
    DF_FORM2       TEXT NOT NULL,
    DF_ALT         TEXT NOT NULL,
    DF_DEFN        TEXT NOT NULL,
    PRIMARY KEY (DF_DICT, DF_FORM1, DF_ALT, DF_DEFN),
    FOREIGN KEY (DF_DICT) REFERENCES DICTIONARIES (DI_DICT));

CREATE INDEX IDX_DEFINITIONS_01 ON DEFINITIONS (DF_FORM2 ASC);

"""

USAGE = """Usage: make-database

Create a new dictionary database: main.sqlite

"""


def main():
    """Create dictionary database if it does not already exist."""
    if len(sys.argv) > 1 and sys.argv[1] in ('-h', '--help'):
        print(USAGE, end='')
        return 0
    elif len(sys.argv) != 1:
        sys.stderr.write(USAGE)
        return 1
    db_path = os.path.join(os.path.dirname(__file__), 'main.sqlite')
    if os.path.exists(db_path):
        sys.stderr.write('Database already exists: ' + db_path + '\n')
    else:
        db_conn = sqlite3.connect(db_path)
        try:
            db_conn.executescript(SQL)
        finally:
            db_conn.close()
    return 0


if __name__ == '__main__':
    sys.exit(main())
