[FEAT] add timestamp on register (#15)

* add timestamp on register
This commit is contained in:
Tiago Vasconcelos 2023-08-18 07:17:29 +01:00 committed by GitHub
parent 4586164016
commit c8b31d8e3f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 33 additions and 15 deletions

View file

@ -1,4 +1,5 @@
# Events - <small>[LNbits](https://github.com/lnbits/lnbits) extension</small> # Events - <small>[LNbits](https://github.com/lnbits/lnbits) extension</small>
<small>For more about LNBits extension check [this tutorial](https://github.com/lnbits/lnbits/wiki/LNbits-Extensions)</small> <small>For more about LNBits extension check [this tutorial](https://github.com/lnbits/lnbits/wiki/LNbits-Extensions)</small>
## Sell tickets for events and use the built-in scanner for registering attendants ## Sell tickets for events and use the built-in scanner for registering attendants

View file

@ -1,6 +1,6 @@
{ {
"name": "Events", "name": "Events",
"short_description": "Sell and register event tickets", "short_description": "Sell and register event tickets",
"tile": "/events/static/image/events.png", "tile": "/events/static/image/events.png",
"contributors": ["benarc"] "contributors": ["benarc"]
} }

View file

@ -135,7 +135,8 @@ async def get_event_tickets(event_id: str, wallet_id: str) -> List[Ticket]:
async def reg_ticket(ticket_id: str) -> List[Ticket]: async def reg_ticket(ticket_id: str) -> List[Ticket]:
await db.execute( await db.execute(
"UPDATE events.ticket SET registered = ? WHERE id = ?", (True, ticket_id) f"UPDATE events.ticket SET registered = ?, reg_timestamp = {db.timestamp_now} WHERE id = ?",
(True, ticket_id),
) )
ticket = await db.fetchone("SELECT * FROM events.ticket WHERE id = ?", (ticket_id,)) ticket = await db.fetchone("SELECT * FROM events.ticket WHERE id = ?", (ticket_id,))
rows = await db.fetchall( rows = await db.fetchall(

View file

@ -1,9 +1,9 @@
{ {
"repos": [ "repos": [
{ {
"id": "events", "id": "events",
"organisation": "lnbits", "organisation": "lnbits",
"repository": "events" "repository": "events"
} }
] ]
} }

View file

@ -1,5 +1,4 @@
async def m001_initial(db): async def m001_initial(db):
await db.execute( await db.execute(
""" """
CREATE TABLE events.events ( CREATE TABLE events.events (
@ -38,7 +37,6 @@ async def m001_initial(db):
async def m002_changed(db): async def m002_changed(db):
await db.execute( await db.execute(
""" """
CREATE TABLE events.ticket ( CREATE TABLE events.ticket (
@ -81,3 +79,12 @@ async def m002_changed(db):
(row[0], row[1], row[2], row[3], row[4], row[5], True), (row[0], row[1], row[2], row[3], row[4], row[5], True),
) )
await db.execute("DROP TABLE events.tickets") await db.execute("DROP TABLE events.tickets")
async def m003_add_register_timestamp(db):
"""
Add a column to register the timestamp of ticket register
"""
await db.execute(
"ALTER TABLE events.ticket ADD COLUMN reg_timestamp TIMESTAMP;"
) # NULL means not registered, or old ticket

View file

@ -1,5 +1,6 @@
from fastapi import Query from fastapi import Query
from pydantic import BaseModel from pydantic import BaseModel
from typing import Optional
class CreateEvent(BaseModel): class CreateEvent(BaseModel):
@ -39,5 +40,6 @@ class Ticket(BaseModel):
name: str name: str
email: str email: str
registered: bool registered: bool
reg_timestamp: Optional[int]
paid: bool paid: bool
time: int time: int

View file

@ -109,7 +109,13 @@ async def api_ticket_make_ticket(event_id, name, email):
memo=f"{event_id}", memo=f"{event_id}",
extra={"tag": "events", "name": name, "email": email}, extra={"tag": "events", "name": name, "email": email},
) )
await create_ticket(payment_hash=payment_hash, wallet=event.wallet, event=event.id, name=name, email=email) await create_ticket(
payment_hash=payment_hash,
wallet=event.wallet,
event=event.id,
name=name,
email=email,
)
except Exception as e: except Exception as e:
raise HTTPException(status_code=HTTPStatus.INTERNAL_SERVER_ERROR, detail=str(e)) raise HTTPException(status_code=HTTPStatus.INTERNAL_SERVER_ERROR, detail=str(e))
return {"payment_hash": payment_hash, "payment_request": payment_request} return {"payment_hash": payment_hash, "payment_request": payment_request}
@ -167,6 +173,7 @@ async def api_event_tickets(wallet_id, event_id):
@events_ext.get("/api/v1/register/ticket/{ticket_id}") @events_ext.get("/api/v1/register/ticket/{ticket_id}")
async def api_event_register_ticket(ticket_id): async def api_event_register_ticket(ticket_id):
ticket = await get_ticket(ticket_id) ticket = await get_ticket(ticket_id)
if not ticket: if not ticket:
raise HTTPException( raise HTTPException(
status_code=HTTPStatus.NOT_FOUND, detail="Ticket does not exist." status_code=HTTPStatus.NOT_FOUND, detail="Ticket does not exist."