works
This commit is contained in:
40
app/sbin/api
40
app/sbin/api
@@ -71,7 +71,8 @@ def init_db():
|
||||
status CHAR(20),
|
||||
created DATE,
|
||||
bump DATE,
|
||||
secret TEXT
|
||||
secret TEXT,
|
||||
contract TEXT
|
||||
)
|
||||
''')
|
||||
conn.commit()
|
||||
@@ -92,6 +93,12 @@ def execute_db(query: str, params: tuple = (), fetch: bool = False):
|
||||
|
||||
|
||||
# ---------------------- Models ----------------------
|
||||
class ContractItem(BaseModel):
|
||||
quantity: int
|
||||
name: str
|
||||
product_id: int
|
||||
features: Dict[str, Any]
|
||||
|
||||
class ContainerModel(BaseModel):
|
||||
UUID: str
|
||||
email: Optional[str] = None
|
||||
@@ -107,7 +114,7 @@ class ContainerModel(BaseModel):
|
||||
created: Optional[str] = None
|
||||
bump: Optional[str] = None
|
||||
secret: Optional[Dict[str, Any]] = None
|
||||
|
||||
contract: Optional[str] = None
|
||||
class UUIDRequest(BaseModel):
|
||||
UUID: str
|
||||
|
||||
@@ -129,22 +136,6 @@ import json
|
||||
|
||||
app = FastAPI()
|
||||
|
||||
# ---------------------- Models ----------------------
|
||||
class ContainerModel(BaseModel):
|
||||
UUID: str
|
||||
email: Optional[str] = None
|
||||
expires: Optional[str] = None
|
||||
tags: Optional[str] = None
|
||||
env: Optional[Dict[str, Any]] = None
|
||||
affiliate: Optional[str] = None
|
||||
image: Optional[str] = None
|
||||
history: Optional[str] = None
|
||||
comment: Optional[str] = None
|
||||
domains: Optional[str] = None
|
||||
status: Optional[str] = None
|
||||
created: Optional[str] = None
|
||||
bump: Optional[str] = None
|
||||
secret: Optional[Dict[str, Any]] = None
|
||||
|
||||
# ---------------------- Routes ----------------------
|
||||
@app.get("/", include_in_schema=False)
|
||||
@@ -157,6 +148,8 @@ def update_container(request: ContainerModel):
|
||||
# Convert dict fields to JSON strings
|
||||
env_str = json.dumps(request.env) if isinstance(request.env, dict) else None
|
||||
secret_str = json.dumps(request.secret) if isinstance(request.secret, dict) else None
|
||||
contract_str = json.dumps(request.contract) if isinstance(request.contract, dict) else None
|
||||
|
||||
|
||||
# Fetch existing record
|
||||
existing = execute_db("SELECT * FROM containers WHERE UUID = ?", (request.UUID,), fetch=True)
|
||||
@@ -164,12 +157,12 @@ def update_container(request: ContainerModel):
|
||||
# If record does not exist, insert a new one with all given fields
|
||||
execute_db("""
|
||||
INSERT INTO containers (UUID, email, expires, tags, env, affiliate, image, history,
|
||||
comment, domains, status, created, bump, secret)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
||||
comment, domains, status, created, bump, secret, contract)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
||||
""", (
|
||||
request.UUID, request.email, request.expires, request.tags, env_str,
|
||||
request.affiliate, request.image, request.history, request.comment,
|
||||
request.domains, request.status, request.created, request.bump, secret_str
|
||||
request.domains, request.status, request.created, request.bump, secret_str, contract_str
|
||||
))
|
||||
return {"UUID": request.UUID, "status": "created"}
|
||||
|
||||
@@ -184,8 +177,9 @@ def update_container(request: ContainerModel):
|
||||
continue
|
||||
value = getattr(request, field)
|
||||
if value is not None:
|
||||
if field in ["env", "secret"]:
|
||||
if field in ["env", "secret", "contract"]:
|
||||
value = json.dumps(value)
|
||||
|
||||
updates[field] = value
|
||||
params.append(value)
|
||||
|
||||
@@ -222,7 +216,7 @@ def info_container(request: Optional[UUIDRequest] = None):
|
||||
# Fields to select
|
||||
fields = [
|
||||
"ID", "UUID", "email", "expires", "tags", "env", "affiliate",
|
||||
"image", "history", "comment", "domains", "status", "created"
|
||||
"image", "history", "comment", "domains", "status", "created", "contract"
|
||||
]
|
||||
field_str = ", ".join(fields)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user