53 lines
1.4 KiB
Python
53 lines
1.4 KiB
Python
from fastapi import APIRouter, HTTPException
|
|
from sqlalchemy import Column, String, Integer
|
|
from sqlalchemy.ext.declarative import declarative_base
|
|
from typing import List
|
|
|
|
Base = declarative_base()
|
|
|
|
class Country(Base):
|
|
__tablename__ = "countries"
|
|
|
|
id = Column(Integer, primary_key=True, index=True)
|
|
name = Column(String, unique=True, index=True)
|
|
code = Column(String, unique=True)
|
|
phone_code = Column(String)
|
|
|
|
router = APIRouter()
|
|
|
|
@router.get("/whatsapp")
|
|
async def get_countries() -> List[dict]:
|
|
"""Get list of countries with phone codes"""
|
|
countries = [
|
|
{"name": "United States", "code": "US", "phone_code": "+1"},
|
|
{"name": "United Kingdom", "code": "GB", "phone_code": "+44"},
|
|
{"name": "India", "code": "IN", "phone_code": "+91"}
|
|
]
|
|
|
|
return {
|
|
"method": "GET",
|
|
"_verb": "get",
|
|
"countries": countries,
|
|
"total": len(countries)
|
|
}
|
|
|
|
# Migration file
|
|
"""
|
|
from alembic import op
|
|
import sqlalchemy as sa
|
|
|
|
def upgrade():
|
|
op.create_table(
|
|
'countries',
|
|
sa.Column('id', sa.Integer(), nullable=False),
|
|
sa.Column('name', sa.String(), nullable=False),
|
|
sa.Column('code', sa.String(), nullable=False),
|
|
sa.Column('phone_code', sa.String(), nullable=False),
|
|
sa.PrimaryKeyConstraint('id'),
|
|
sa.UniqueConstraint('name'),
|
|
sa.UniqueConstraint('code')
|
|
)
|
|
|
|
def downgrade():
|
|
op.drop_table('countries')
|
|
""" |