From 2267fbe9a4b34691fa12055a5ca1b8ae400f6aae Mon Sep 17 00:00:00 2001 From: Tim Bouma Date: Sun, 19 Mar 2023 10:07:44 -0400 Subject: [PATCH] Postgres with Dockerfile changes (#148) * added postgres support * added libpq-dev --- Dockerfile | 1 + cashu/core/db.py | 56 ++++++++++++++++++++++++------------------------ 2 files changed, 29 insertions(+), 28 deletions(-) diff --git a/Dockerfile b/Dockerfile index 4dde36e..c4cd20f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,7 @@ FROM python:3.9-slim RUN apt-get update RUN apt-get install -y curl python3-dev autoconf g++ +RUN apt-get install -y libpq-dev RUN curl -sSL https://install.python-poetry.org | python3 - ENV PATH="/root/.local/bin:$PATH" WORKDIR /app diff --git a/cashu/core/db.py b/cashu/core/db.py index 5b05af6..d877b2d 100644 --- a/cashu/core/db.py +++ b/cashu/core/db.py @@ -84,38 +84,38 @@ class Database(Compat): self.db_location = db_location self.db_location_is_url = "://" in self.db_location if self.db_location_is_url: - raise Exception("Remote databases not supported. Use SQLite.") - # database_uri = self.db_location + # raise Exception("Remote databases not supported. Use SQLite.") + database_uri = self.db_location - # if database_uri.startswith("cockroachdb://"): - # self.type = COCKROACH - # else: - # self.type = POSTGRES + if database_uri.startswith("cockroachdb://"): + self.type = COCKROACH + else: + self.type = POSTGRES - # import psycopg2 # type: ignore + import psycopg2 # type: ignore - # def _parse_timestamp(value, _): - # f = "%Y-%m-%d %H:%M:%S.%f" - # if not "." in value: - # f = "%Y-%m-%d %H:%M:%S" - # return time.mktime(datetime.datetime.strptime(value, f).timetuple()) + def _parse_timestamp(value, _): + f = "%Y-%m-%d %H:%M:%S.%f" + if not "." in value: + f = "%Y-%m-%d %H:%M:%S" + return time.mktime(datetime.datetime.strptime(value, f).timetuple()) - # psycopg2.extensions.register_type( - # psycopg2.extensions.new_type( - # psycopg2.extensions.DECIMAL.values, - # "DEC2FLOAT", - # lambda value, curs: float(value) if value is not None else None, - # ) - # ) - # psycopg2.extensions.register_type( - # psycopg2.extensions.new_type( - # (1082, 1083, 1266), - # "DATE2INT", - # lambda value, curs: time.mktime(value.timetuple()) - # if value is not None - # else None, - # ) - # ) + psycopg2.extensions.register_type( + psycopg2.extensions.new_type( + psycopg2.extensions.DECIMAL.values, + "DEC2FLOAT", + lambda value, curs: float(value) if value is not None else None, + ) + ) + psycopg2.extensions.register_type( + psycopg2.extensions.new_type( + (1082, 1083, 1266), + "DATE2INT", + lambda value, curs: time.mktime(value.timetuple()) + if value is not None + else None, + ) + ) # psycopg2.extensions.register_type( # psycopg2.extensions.new_type(