fix: wrong typing in DB columns (#51)
* fix: wrong typing in DB columns * fix: update * fix: migrations * chore: lint
This commit is contained in:
parent
3edd81d85e
commit
79c74708e1
4 changed files with 79 additions and 12 deletions
6
crud.py
6
crud.py
|
|
@ -57,11 +57,7 @@ async def create_card(data: CreateCardData, wallet_id: str) -> Card:
|
||||||
return card
|
return card
|
||||||
|
|
||||||
|
|
||||||
async def update_card(card_id: str, data: CreateCardData) -> Card:
|
async def update_card(card: Card) -> Card:
|
||||||
card = Card(
|
|
||||||
id=card_id,
|
|
||||||
**data.dict(),
|
|
||||||
)
|
|
||||||
await db.update("boltcards.cards", card)
|
await db.update("boltcards.cards", card)
|
||||||
return card
|
return card
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -55,3 +55,76 @@ async def m001_initial(db):
|
||||||
);
|
);
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
async def m002_correct_typing(db):
|
||||||
|
await db.execute("ALTER TABLE boltcards.cards RENAME TO cards_m001;")
|
||||||
|
await db.execute(
|
||||||
|
"""
|
||||||
|
CREATE TABLE boltcards.cards (
|
||||||
|
id TEXT PRIMARY KEY UNIQUE,
|
||||||
|
wallet TEXT NOT NULL,
|
||||||
|
card_name TEXT NOT NULL,
|
||||||
|
uid TEXT NOT NULL UNIQUE,
|
||||||
|
external_id TEXT NOT NULL UNIQUE,
|
||||||
|
counter INT NOT NULL DEFAULT 0,
|
||||||
|
tx_limit INT NOT NULL,
|
||||||
|
daily_limit INT NOT NULL,
|
||||||
|
enable BOOL NOT NULL,
|
||||||
|
k0 TEXT NOT NULL DEFAULT '00000000000000000000000000000000',
|
||||||
|
k1 TEXT NOT NULL DEFAULT '00000000000000000000000000000000',
|
||||||
|
k2 TEXT NOT NULL DEFAULT '00000000000000000000000000000000',
|
||||||
|
prev_k0 TEXT NOT NULL DEFAULT '00000000000000000000000000000000',
|
||||||
|
prev_k1 TEXT NOT NULL DEFAULT '00000000000000000000000000000000',
|
||||||
|
prev_k2 TEXT NOT NULL DEFAULT '00000000000000000000000000000000',
|
||||||
|
otp TEXT NOT NULL DEFAULT '',
|
||||||
|
time TIMESTAMP NOT NULL DEFAULT """
|
||||||
|
+ db.timestamp_now
|
||||||
|
+ """
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
await db.execute(
|
||||||
|
"""
|
||||||
|
INSERT INTO boltcards.cards (
|
||||||
|
id,
|
||||||
|
wallet,
|
||||||
|
card_name,
|
||||||
|
uid,
|
||||||
|
external_id,
|
||||||
|
counter,
|
||||||
|
tx_limit,
|
||||||
|
daily_limit,
|
||||||
|
enable,
|
||||||
|
k0,
|
||||||
|
k1,
|
||||||
|
k2,
|
||||||
|
prev_k0,
|
||||||
|
prev_k1,
|
||||||
|
prev_k2,
|
||||||
|
otp,
|
||||||
|
time
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
id,
|
||||||
|
wallet,
|
||||||
|
card_name,
|
||||||
|
uid,
|
||||||
|
external_id,
|
||||||
|
counter,
|
||||||
|
CAST(tx_limit AS INT),
|
||||||
|
CAST(daily_limit AS INT),
|
||||||
|
enable,
|
||||||
|
k0,
|
||||||
|
k1,
|
||||||
|
k2,
|
||||||
|
prev_k0,
|
||||||
|
prev_k1,
|
||||||
|
prev_k2,
|
||||||
|
otp,
|
||||||
|
time
|
||||||
|
FROM boltcards.cards_m001;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
await db.execute("DROP TABLE boltcards.cards_m001;")
|
||||||
|
|
|
||||||
|
|
@ -17,10 +17,8 @@ class Card(BaseModel):
|
||||||
uid: str
|
uid: str
|
||||||
external_id: str
|
external_id: str
|
||||||
counter: int
|
counter: int
|
||||||
# TODO: database column is TEXT should be INT
|
tx_limit: int
|
||||||
tx_limit: str
|
daily_limit: int
|
||||||
# TODO: database column is TEXT should be INT
|
|
||||||
daily_limit: str
|
|
||||||
enable: bool
|
enable: bool
|
||||||
k0: str
|
k0: str
|
||||||
k1: str
|
k1: str
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,6 @@ async def api_card_update(
|
||||||
card_id: str,
|
card_id: str,
|
||||||
wallet: WalletTypeInfo = Depends(require_admin_key),
|
wallet: WalletTypeInfo = Depends(require_admin_key),
|
||||||
) -> Card:
|
) -> Card:
|
||||||
|
|
||||||
card = await get_card(card_id)
|
card = await get_card(card_id)
|
||||||
if not card:
|
if not card:
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
|
|
@ -85,8 +84,9 @@ async def api_card_update(
|
||||||
detail="UID already registered. Delete registered card and try again.",
|
detail="UID already registered. Delete registered card and try again.",
|
||||||
status_code=HTTPStatus.BAD_REQUEST,
|
status_code=HTTPStatus.BAD_REQUEST,
|
||||||
)
|
)
|
||||||
card = await update_card(card_id, **data.dict())
|
for key, value in data.dict().items():
|
||||||
assert card, "update_card should always return a card"
|
setattr(card, key, value)
|
||||||
|
await update_card(card)
|
||||||
return card
|
return card
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue