Compare commits
1 Commits
postgresql
...
master
Author | SHA1 | Date |
---|---|---|
coolneng | 71e0824c84 |
|
@ -4,7 +4,6 @@ from sqlalchemy.orm import sessionmaker
|
||||||
|
|
||||||
from constants import TESTING_DB as DB
|
from constants import TESTING_DB as DB
|
||||||
|
|
||||||
engine = create_engine(DB)
|
engine = create_engine(DB, connect_args={"check_same_thread": False})
|
||||||
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
|
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
|
||||||
Base = declarative_base()
|
Base = declarative_base()
|
||||||
Base.metadata.create_all(bind=engine)
|
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
"""remove test users
|
||||||
|
|
||||||
|
Revision ID: c93f3cf71005
|
||||||
|
Revises: e443e876bf33
|
||||||
|
Create Date: 2021-02-10 00:41:48.290699
|
||||||
|
|
||||||
|
"""
|
||||||
|
import sqlalchemy as sa
|
||||||
|
from alembic import op
|
||||||
|
|
||||||
|
# revision identifiers, used by Alembic.
|
||||||
|
revision = "c93f3cf71005"
|
||||||
|
down_revision = "e443e876bf33"
|
||||||
|
branch_labels = None
|
||||||
|
depends_on = None
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade():
|
||||||
|
query = "DELETE FROM users WHERE email LIKE '%techugo%'"
|
||||||
|
op.execute(query)
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade():
|
||||||
|
pass
|
|
@ -1,52 +0,0 @@
|
||||||
"""resolve foreign key conflicts
|
|
||||||
|
|
||||||
Revision ID: f6ec7393c858
|
|
||||||
Revises: e35936e392dd
|
|
||||||
Create Date: 2021-02-10 17:31:22.145457
|
|
||||||
|
|
||||||
"""
|
|
||||||
import sqlalchemy as sa
|
|
||||||
from alembic import op
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
|
||||||
revision = "f6ec7393c858"
|
|
||||||
down_revision = "e443e876bf33"
|
|
||||||
branch_labels = None
|
|
||||||
depends_on = None
|
|
||||||
|
|
||||||
|
|
||||||
def upgrade():
|
|
||||||
foreign_keys = {
|
|
||||||
"users": "city_id",
|
|
||||||
"games": "sports_id",
|
|
||||||
"venues": "user_id",
|
|
||||||
"venue_images": "user_id",
|
|
||||||
}
|
|
||||||
for table, field in foreign_keys.items():
|
|
||||||
if table == "venues" or table == "venue_images":
|
|
||||||
query = f"UPDATE {table} SET {field} = 1976 WHERE {field} = 0"
|
|
||||||
else:
|
|
||||||
query = f"UPDATE {table} SET {field} = 1 WHERE {field} = 0"
|
|
||||||
op.execute(query)
|
|
||||||
game_id_tables = [
|
|
||||||
"player_availabilities",
|
|
||||||
"teams",
|
|
||||||
"user_ratings",
|
|
||||||
"purchase_games",
|
|
||||||
"payments",
|
|
||||||
"player_cancel_games",
|
|
||||||
]
|
|
||||||
venue_id_tables = [
|
|
||||||
"venue_images",
|
|
||||||
"games",
|
|
||||||
]
|
|
||||||
for table in game_id_tables:
|
|
||||||
query = f"DELETE FROM {table} WHERE game_id NOT IN (SELECT id from games)"
|
|
||||||
op.execute(query)
|
|
||||||
for table in venue_id_tables:
|
|
||||||
query = f"DELETE FROM {table} WHERE venue_id NOT IN (SELECT id from venues)"
|
|
||||||
op.execute(query)
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
|
||||||
pass
|
|
|
@ -1,28 +0,0 @@
|
||||||
[tool.poetry]
|
|
||||||
name = "odapi"
|
|
||||||
version = "0.1.0"
|
|
||||||
description = "Odyfo RESTful API"
|
|
||||||
authors = ["coolneng <akasroua@gmail.com>"]
|
|
||||||
license = "GPL-3.0-or-later"
|
|
||||||
|
|
||||||
[tool.poetry.dependencies]
|
|
||||||
python = "^3.8"
|
|
||||||
fastapi = "^0.63.0"
|
|
||||||
uvicorn = "^0.13.3"
|
|
||||||
pydantic = "^1.7.3"
|
|
||||||
email-validator = "^1.1.2"
|
|
||||||
SQLAlchemy = "^1.3.23"
|
|
||||||
alembic = "^1.5.4"
|
|
||||||
twilio = "^6.51.1"
|
|
||||||
passlib = "^1.7.4"
|
|
||||||
bcrypt = "^3.2.0"
|
|
||||||
psycopg2 = "^2.8.6"
|
|
||||||
|
|
||||||
[tool.poetry.dev-dependencies]
|
|
||||||
pytest = "^6.2.2"
|
|
||||||
isort = "^5.7.0"
|
|
||||||
pyflakes = "^2.2.0"
|
|
||||||
|
|
||||||
[build-system]
|
|
||||||
requires = ["poetry-core>=1.0.0"]
|
|
||||||
build-backend = "poetry.core.masonry.api"
|
|
42
shell.nix
42
shell.nix
|
@ -2,28 +2,22 @@
|
||||||
|
|
||||||
with pkgs;
|
with pkgs;
|
||||||
|
|
||||||
let
|
mkShell {
|
||||||
sql_file = "assets/db_creation.sql";
|
buildInputs = [
|
||||||
data_dir = "$(pwd)/.pgdata";
|
# Dependencies
|
||||||
|
python38Packages.fastapi
|
||||||
in mkShell {
|
python38Packages.uvicorn
|
||||||
buildInputs = [ python38 poetry postgresql ];
|
python38Packages.pydantic
|
||||||
|
python38Packages.email_validator
|
||||||
shellHook = ''
|
python38Packages.sqlalchemy
|
||||||
trap "kill 0" EXIT
|
python38Packages.alembic
|
||||||
export PGDATA="${data_dir}"
|
python38Packages.pytest
|
||||||
export PGHOST="${data_dir}"
|
python38Packages.twilio
|
||||||
|
python38Packages.passlib
|
||||||
if [ ! -d ${data_dir} ]; then
|
python38Packages.bcrypt
|
||||||
initdb --auth-local=trust --no-locale --encoding=UTF8
|
sqlite
|
||||||
fi
|
# Development tools
|
||||||
|
python38Packages.isort
|
||||||
if ! pg_ctl status; then
|
python38Packages.pyflakes
|
||||||
pg_ctl start -o "--unix_socket_directories=${data_dir} --listen_addresses='''"
|
];
|
||||||
fi
|
|
||||||
|
|
||||||
alias psql='psql -d postgres'
|
|
||||||
alias create_db='psql -d postgres -f ${sql_file}'
|
|
||||||
alias nuke='rm -rf ${data_dir}'
|
|
||||||
'';
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,6 @@ from sqlalchemy.orm import sessionmaker
|
||||||
from app import app
|
from app import app
|
||||||
from constants import TESTING_DB
|
from constants import TESTING_DB
|
||||||
|
|
||||||
engine = create_engine(TESTING_DB)
|
engine = create_engine(TESTING_DB, connect_args={"check_same_thread": False})
|
||||||
TestingSessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
|
TestingSessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
|
||||||
client = TestClient(app)
|
client = TestClient(app)
|
||||||
|
|
Loading…
Reference in New Issue