diff --git a/MANIFEST.in b/MANIFEST.in index d0818196..7c22eb1b 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,4 +1,5 @@ include LICENSE +include createdb.sql include init.sql graft tests global-exclude *.pyc diff --git a/init.sql b/init.sql index 7b46b740..326391ee 100644 --- a/init.sql +++ b/init.sql @@ -1,8 +1,4 @@ -CREATE DATABASE squeakserver; - -\connect squeakserver; - -CREATE TABLE squeak ( +CREATE TABLE IF NOT EXISTS squeak ( hash CHAR(64) PRIMARY KEY, created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, nVersion INTEGER NOT NULL, @@ -22,5 +18,5 @@ CREATE TABLE squeak ( content CHAR(1120) ); -CREATE INDEX idx_squeak_address +CREATE INDEX IF NOT EXISTS idx_squeak_address ON squeak(address); diff --git a/itests/createdb.sql b/itests/createdb.sql new file mode 100644 index 00000000..24618bd8 --- /dev/null +++ b/itests/createdb.sql @@ -0,0 +1,3 @@ +CREATE DATABASE squeakserver; + +\connect squeakserver; diff --git a/itests/docker-compose.yml b/itests/docker-compose.yml index 722ad97a..6b315a57 100644 --- a/itests/docker-compose.yml +++ b/itests/docker-compose.yml @@ -87,7 +87,7 @@ services: - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres volumes: - - ../init.sql:/docker-entrypoint-initdb.d/init.sql + - ./createdb.sql:/docker-entrypoint-initdb.d/init.sql sqkserver: image: sqkserver diff --git a/squeakserver/server/db_params.py b/squeakserver/server/db_params.py index 24762db6..ff0a5e8b 100644 --- a/squeakserver/server/db_params.py +++ b/squeakserver/server/db_params.py @@ -2,8 +2,6 @@ valid_params = {'host', 'database', 'user', 'password'} -# valid_params = {'host', 'user', 'password'} - def parse_db_params(config, section='postgresql'): # get section, default to postgresql diff --git a/squeakserver/server/main.py b/squeakserver/server/main.py index 4eff2c9e..43c6fb34 100644 --- a/squeakserver/server/main.py +++ b/squeakserver/server/main.py @@ -154,6 +154,7 @@ def run_server(config): postgres_db = load_postgres_db(config) print('postgres_db: ' + str(postgres_db), flush=True) postgres_db.get_connection() + postgres_db.init() print('starting lightning client here...', flush=True) lightning_client = load_lightning_client(config) diff --git a/squeakserver/server/postgres_db.py b/squeakserver/server/postgres_db.py index 2f066161..bc5b5eb0 100644 --- a/squeakserver/server/postgres_db.py +++ b/squeakserver/server/postgres_db.py @@ -30,6 +30,14 @@ class PostgresDb(): db_version = curs.fetchone() print(db_version) + def init(self): + """ Create the tables and indices in the database. """ + with psycopg2.connect(**self.params) as conn: + with conn.cursor() as curs: + # execute a statement + print('Setting up database tables...') + curs.execute(open("init.sql", "r").read()) + def insert_squeak(self, squeak): """ Insert a new squeak. """ sql = """