mirror of
https://github.com/yzernik/squeaknode.git
synced 2026-08-13 12:33:25 +02:00
Use configurable engine for db (#251)
* Use configurable engine in db class constructor * Remove unused tables in db class * Rename squeak db class * Remove load db params comment
This commit is contained in:
parent
2735d80d3f
commit
ceca429d78
6 changed files with 40 additions and 44 deletions
|
|
@ -1,2 +1 @@
|
|||
include init.sql
|
||||
global-exclude *.pyc
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ RUN git clone https://github.com/googleapis/googleapis.git
|
|||
# Copy the source code.
|
||||
COPY squeakserver ./squeakserver
|
||||
COPY proto ./proto
|
||||
COPY setup.py setup.cfg MANIFEST.in README.md init.sql install-rpc.sh wait-for-it.sh ./
|
||||
COPY setup.py setup.cfg MANIFEST.in README.md install-rpc.sh wait-for-it.sh ./
|
||||
|
||||
# Install the gRPC files.
|
||||
RUN chmod +x install-rpc.sh && \
|
||||
|
|
|
|||
17
squeakserver/db/db_engine.py
Normal file
17
squeakserver/db/db_engine.py
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
from sqlalchemy import create_engine
|
||||
|
||||
|
||||
def get_postgres_engine(user, password, host, database):
|
||||
return create_engine(
|
||||
get_postgres_connection_string(
|
||||
user, password, host, database
|
||||
)
|
||||
)
|
||||
|
||||
def get_postgres_connection_string(user, password, host, database):
|
||||
return "postgresql://{}:{}@{}/{}".format(
|
||||
user,
|
||||
password,
|
||||
host,
|
||||
database,
|
||||
)
|
||||
|
|
@ -25,27 +25,12 @@ from squeakserver.server.util import get_hash
|
|||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class PostgresDb:
|
||||
def __init__(self, params, schema):
|
||||
logger.info("Starting connection pool with params: {}".format(params))
|
||||
class SqueakDb:
|
||||
def __init__(self, engine, schema):
|
||||
self.schema = schema
|
||||
self.db_string = self.get_connection_string(params)
|
||||
self.engine = create_engine(self.db_string)
|
||||
|
||||
self.engine = engine
|
||||
self.metadata = MetaData(schema=schema)
|
||||
|
||||
self.users = Table('users', self.metadata,
|
||||
Column('id', Integer, primary_key=True),
|
||||
Column('name', String),
|
||||
Column('fullname', String),
|
||||
)
|
||||
|
||||
self.addresses = Table('addresses', self.metadata,
|
||||
Column('id', Integer, primary_key=True),
|
||||
Column('user_id', None, ForeignKey('users.id')),
|
||||
Column('email_address', String, nullable=False)
|
||||
)
|
||||
|
||||
self.squeaks = Table('squeak', self.metadata,
|
||||
Column('hash', String(64), primary_key=True),
|
||||
Column('created', DateTime, server_default=func.now(), nullable=False),
|
||||
|
|
@ -123,14 +108,6 @@ class PostgresDb:
|
|||
self.metadata.create_all(self.engine)
|
||||
logger.info("Called create_tables")
|
||||
|
||||
def get_connection_string(self, params):
|
||||
return "postgresql://{}:{}@{}/{}".format(
|
||||
params['user'],
|
||||
params['password'],
|
||||
params['host'],
|
||||
params['database'],
|
||||
)
|
||||
|
||||
def init(self):
|
||||
""" Create the tables and indices in the database. """
|
||||
logger.info("SqlAlchemy version: {}".format(sqlalchemy.__version__))
|
||||
|
|
@ -12,10 +12,11 @@ from squeakserver.admin.squeak_admin_server_handler import SqueakAdminServerHand
|
|||
from squeakserver.admin.squeak_admin_server_servicer import SqueakAdminServerServicer
|
||||
from squeakserver.blockchain.bitcoin_blockchain_client import BitcoinBlockchainClient
|
||||
from squeakserver.common.lnd_lightning_client import LNDLightningClient
|
||||
from squeakserver.db.db_params import parse_db_params
|
||||
from squeakserver.db.db_engine import get_postgres_engine
|
||||
from squeakserver.node.squeak_node import SqueakNode
|
||||
from squeakserver.server.db_params import parse_db_params
|
||||
from squeakserver.server.lightning_address import LightningAddressHostPort
|
||||
from squeakserver.server.postgres_db import PostgresDb
|
||||
from squeakserver.db.squeak_db import SqueakDb
|
||||
from squeakserver.server.squeak_server_handler import SqueakServerHandler
|
||||
from squeakserver.server.squeak_server_servicer import SqueakServerServicer
|
||||
|
||||
|
|
@ -71,14 +72,20 @@ def load_admin_handler(lightning_client, squeak_node):
|
|||
return SqueakAdminServerHandler(lightning_client, squeak_node,)
|
||||
|
||||
|
||||
def load_db_params(config, schema):
|
||||
db_params = parse_db_params(config)
|
||||
db_params['options'] = "--search_path={}".format(schema)
|
||||
return db_params
|
||||
def load_db_engine(config):
|
||||
# TODO: check if using postgres
|
||||
if True:
|
||||
return get_postgres_engine(
|
||||
config["postgresql"]["user"],
|
||||
config["postgresql"]["password"],
|
||||
config["postgresql"]["host"],
|
||||
config["postgresql"]["database"],
|
||||
)
|
||||
|
||||
|
||||
def load_postgres_db(db_params, schema):
|
||||
return PostgresDb(db_params, schema)
|
||||
def load_db(config, schema):
|
||||
engine = load_db_engine(config)
|
||||
return SqueakDb(engine, schema)
|
||||
|
||||
|
||||
def load_blockchain_client(config):
|
||||
|
|
@ -144,14 +151,10 @@ def run_server(config):
|
|||
logger.info("network: " + network)
|
||||
SelectParams(network)
|
||||
|
||||
# load the db params
|
||||
db_params = load_db_params(config, network)
|
||||
logger.info("db params: " + str(db_params))
|
||||
|
||||
# load postgres db
|
||||
postgres_db = load_postgres_db(db_params, network)
|
||||
logger.info("postgres_db: " + str(postgres_db))
|
||||
postgres_db.init()
|
||||
squeak_db = load_db(config, network)
|
||||
logger.info("squeak_db: " + str(squeak_db))
|
||||
squeak_db.init()
|
||||
|
||||
# load the price
|
||||
price = load_price(config)
|
||||
|
|
@ -168,7 +171,7 @@ def run_server(config):
|
|||
|
||||
# Create and start the squeak node
|
||||
squeak_node = SqueakNode(
|
||||
postgres_db,
|
||||
squeak_db,
|
||||
blockchain_client,
|
||||
lightning_client,
|
||||
lightning_host_port,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue