Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 78 additions & 0 deletions .history/be/docs_20250213073657.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
from mangum import Mangum
import os
from os.path import join, dirname
from fastapi import FastAPI
from fastapi.openapi.utils import get_openapi
from dotenv import load_dotenv

load_dotenv(join(dirname(__file__), '..', '.env.test'))
base_api_server_url: str = os.getenv('BASE_API_SERVER_URL')

from be.api.v1.endpoints.products.get import router as v1_products_get


from be.api.v1.endpoints.product_categories.get import (
router as v1_product_categories_get,
)
from be.api.v1.endpoints.product_categories.post import (
router as v1_product_categories_post,
)
from be.api.v1.endpoints.product_categories.delete import (
router as v1_product_categories_delete,
)

from be.api.v1.endpoints.payments.intent.post import router as v1_payments_intent_post
from be.api.v1.endpoints.cart.quotation.post import router as v1_cart_quotation_post
from be.api.v1.endpoints.cart.checkout.post import router as v1_checkout_post

tags_metadata = [
{
"name": "merchandise",
"description": (
"CRUD for merchandise products."
"GET for all users, POST/DELETE/PATCH for admin users."
),
},
]

app = FastAPI(
title="NTU SCSE Site API Docs",
description="![Powered by Vercel](https://www.datocms-assets.com/31049/1618983297-powered-by-vercel.svg)",
version="0.0.1",
openapi_tags=tags_metadata
)

app.include_router(v1_products_get)

app.include_router(v1_product_categories_get)
app.include_router(v1_product_categories_post)
app.include_router(v1_product_categories_delete)

app.include_router(v1_payments_intent_post)
app.include_router(v1_cart_quotation_post)
app.include_router(v1_checkout_post)


def custom_openapi():
if app.openapi_schema:
return app.openapi_schema
openapi_schema = get_openapi(
title=app.title,
version=app.version,
openapi_version=app.openapi_version,
description=app.description,
routes=app.routes,
servers=[{"url": base_api_server_url}, {"url": "http://localhost:4000"}]
# openapi_prefix=app.openapi_prefix,
)
# openapi_schema["info"]["x-logo"] = {
# "url": "https://www.datocms-assets.com/31049/1618983297-powered-by-vercel.svg"
# }

app.openapi_schema = openapi_schema
return openapi_schema


app.openapi = custom_openapi

handler = Mangum(app)
83 changes: 83 additions & 0 deletions .history/be/docs_20250213074014.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
import os
from os.path import join, dirname

from dotenv import load_dotenv
from fastapi import FastAPI
from fastapi.openapi.utils import get_openapi
from mangum import Mangum

# Memuat environment variable dari file .env.test
env_path = join(dirname(__file__), '..', '.env.test')
load_dotenv(env_path)

# Mengambil BASE_API_SERVER_URL dari environment variable, dengan fallback ke localhost
base_api_server_url: str = os.getenv('BASE_API_SERVER_URL', 'http://localhost:8000')

# Debugging jika variabel environment tidak ditemukan
if not os.getenv('BASE_API_SERVER_URL'):
print(f"⚠️ BASE_API_SERVER_URL tidak ditemukan di {env_path}, menggunakan default: {base_api_server_url}")

# Mengimpor endpoint API
from be.api.v1.endpoints.products.get import router as v1_products_get
from be.api.v1.endpoints.product_categories.get import router as v1_product_categories_get
from be.api.v1.endpoints.product_categories.post import router as v1_product_categories_post
from be.api.v1.endpoints.product_categories.delete import router as v1_product_categories_delete
from be.api.v1.endpoints.payments.intent.post import router as v1_payments_intent_post
from be.api.v1.endpoints.cart.quotation.post import router as v1_cart_quotation_post
from be.api.v1.endpoints.cart.checkout.post import router as v1_checkout_post

# Metadata untuk dokumentasi OpenAPI
tags_metadata = [
{
"name": "merchandise",
"description": (
"CRUD for merchandise products. "
"GET for all users, POST/DELETE/PATCH for admin users."
),
},
]

# Inisialisasi FastAPI
app = FastAPI(
title="NTU SCSE Site API Docs",
description="![Powered by Vercel](https://www.datocms-assets.com/31049/1618983297-powered-by-vercel.svg)",
version="0.0.1",
openapi_tags=tags_metadata,
)

# Menyertakan router API
app.include_router(v1_products_get)
app.include_router(v1_product_categories_get)
app.include_router(v1_product_categories_post)
app.include_router(v1_product_categories_delete)
app.include_router(v1_payments_intent_post)
app.include_router(v1_cart_quotation_post)
app.include_router(v1_checkout_post)

# Fungsi untuk menyesuaikan OpenAPI Schema
def custom_openapi():
if app.openapi_schema:
return app.openapi_schema

servers = [{"url": base_api_server_url}]

# Menambahkan server lokal jika belum ada
if base_api_server_url != "http://localhost:4000":
servers.append({"url": "http://localhost:4000"})

openapi_schema = get_openapi(
title=app.title,
version=app.version,
openapi_version="3.0.2", # Menentukan versi OpenAPI secara eksplisit
description=app.description,
routes=app.routes,
servers=servers,
)

app.openapi_schema = openapi_schema
return openapi_schema

app.openapi = custom_openapi

# Handler untuk AWS Lambda melalui Mangum
handler = Mangum(app)
23 changes: 23 additions & 0 deletions .history/be/docs_generate_20250213073915.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import os
import json
from os.path import join, dirname
from be.docs import app

# Menentukan path file output untuk OpenAPI
file_path = join(dirname(__file__), '..', 'out', 'openapi.json')

# Membuat direktori jika belum ada
os.makedirs(dirname(file_path), exist_ok=True)

# Mendapatkan URL server API dari environment variable
base_api_server_url = os.getenv('BASE_API_SERVER_URL', 'http://localhost:8000')

# Menghasilkan dokumentasi OpenAPI dan menulis ke file
openapi_data = app.openapi()

if openapi_data:
with open(file_path, 'w', encoding='utf-8') as f:
json.dump(openapi_data, f, indent=4)
print(f"OpenAPI spec telah disimpan di {file_path}")
else:
print("Peringatan: Tidak ada data OpenAPI yang dihasilkan.")
11 changes: 11 additions & 0 deletions .history/be/root_20250213073657.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
from fastapi import FastAPI
from mangum import Mangum

app = FastAPI()

@app.get("/")
def index():
return {"Hello": "World"}


handler = Mangum(app)
11 changes: 11 additions & 0 deletions .history/be/root_20250213074113.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
from fastapi import FastAPI
from mangum import Mangum

app = FastAPI()

@app.get("/")
def index():
return {"Hello": "World"}


handler = Mangum(app)
32 changes: 32 additions & 0 deletions .history/be/root_20250213074119.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from mangum import Mangum

# Inisialisasi aplikasi FastAPI
app = FastAPI(
title="Simple FastAPI App",
description="Sebuah API sederhana yang menggunakan FastAPI dan Mangum.",
version="1.0.0",
)

# Middleware untuk mengizinkan CORS (bisa diakses dari berbagai domain)
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # Bisa diubah untuk membatasi domain tertentu
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)

@app.get("/")
async def index() -> dict:
"""
Endpoint root yang mengembalikan pesan Hello World.
"""
return {"message": "Hello, World!"}

# Handler untuk AWS Lambda atau serverless deployment
handler = Mangum(app)

# Debugging: Menampilkan pesan saat API dijalankan
print("🚀 FastAPI server is running...")
59 changes: 32 additions & 27 deletions be/docs.py
Original file line number Diff line number Diff line change
@@ -1,78 +1,83 @@
from mangum import Mangum
import os
from os.path import join, dirname

from dotenv import load_dotenv
from fastapi import FastAPI
from fastapi.openapi.utils import get_openapi
from dotenv import load_dotenv
from mangum import Mangum

load_dotenv(join(dirname(__file__), '..', '.env.test'))
base_api_server_url: str = os.getenv('BASE_API_SERVER_URL')
# Memuat environment variable dari file .env.test
env_path = join(dirname(__file__), '..', '.env.test')
load_dotenv(env_path)

from be.api.v1.endpoints.products.get import router as v1_products_get
# Mengambil BASE_API_SERVER_URL dari environment variable, dengan fallback ke localhost
base_api_server_url: str = os.getenv('BASE_API_SERVER_URL', 'http://localhost:8000')

# Debugging jika variabel environment tidak ditemukan
if not os.getenv('BASE_API_SERVER_URL'):
print(f"⚠️ BASE_API_SERVER_URL tidak ditemukan di {env_path}, menggunakan default: {base_api_server_url}")

from be.api.v1.endpoints.product_categories.get import (
router as v1_product_categories_get,
)
from be.api.v1.endpoints.product_categories.post import (
router as v1_product_categories_post,
)
from be.api.v1.endpoints.product_categories.delete import (
router as v1_product_categories_delete,
)

# Mengimpor endpoint API
from be.api.v1.endpoints.products.get import router as v1_products_get
from be.api.v1.endpoints.product_categories.get import router as v1_product_categories_get
from be.api.v1.endpoints.product_categories.post import router as v1_product_categories_post
from be.api.v1.endpoints.product_categories.delete import router as v1_product_categories_delete
from be.api.v1.endpoints.payments.intent.post import router as v1_payments_intent_post
from be.api.v1.endpoints.cart.quotation.post import router as v1_cart_quotation_post
from be.api.v1.endpoints.cart.checkout.post import router as v1_checkout_post

# Metadata untuk dokumentasi OpenAPI
tags_metadata = [
{
"name": "merchandise",
"description": (
"CRUD for merchandise products."
"CRUD for merchandise products. "
"GET for all users, POST/DELETE/PATCH for admin users."
),
},
]

# Inisialisasi FastAPI
app = FastAPI(
title="NTU SCSE Site API Docs",
description="![Powered by Vercel](https://www.datocms-assets.com/31049/1618983297-powered-by-vercel.svg)",
version="0.0.1",
openapi_tags=tags_metadata
openapi_tags=tags_metadata,
)

# Menyertakan router API
app.include_router(v1_products_get)

app.include_router(v1_product_categories_get)
app.include_router(v1_product_categories_post)
app.include_router(v1_product_categories_delete)

app.include_router(v1_payments_intent_post)
app.include_router(v1_cart_quotation_post)
app.include_router(v1_checkout_post)


# Fungsi untuk menyesuaikan OpenAPI Schema
def custom_openapi():
if app.openapi_schema:
return app.openapi_schema

servers = [{"url": base_api_server_url}]

# Menambahkan server lokal jika belum ada
if base_api_server_url != "http://localhost:4000":
servers.append({"url": "http://localhost:4000"})

openapi_schema = get_openapi(
title=app.title,
version=app.version,
openapi_version=app.openapi_version,
openapi_version="3.0.2", # Menentukan versi OpenAPI secara eksplisit
description=app.description,
routes=app.routes,
servers=[{"url": base_api_server_url}, {"url": "http://localhost:4000"}]
# openapi_prefix=app.openapi_prefix,
servers=servers,
)
# openapi_schema["info"]["x-logo"] = {
# "url": "https://www.datocms-assets.com/31049/1618983297-powered-by-vercel.svg"
# }

app.openapi_schema = openapi_schema
return openapi_schema


app.openapi = custom_openapi

# Handler untuk AWS Lambda melalui Mangum
handler = Mangum(app)
24 changes: 17 additions & 7 deletions be/docs_generate.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,23 @@
import os
from os import makedirs
from os.path import join, dirname
import json
from os.path import join, dirname
from be.docs import app

filePath = join(dirname(__file__), '..', 'out', 'openapi.json')
makedirs(dirname(filePath), exist_ok=True)
# Menentukan path file output untuk OpenAPI
file_path = join(dirname(__file__), '..', 'out', 'openapi.json')

# Membuat direktori jika belum ada
os.makedirs(dirname(file_path), exist_ok=True)

# Mendapatkan URL server API dari environment variable
base_api_server_url = os.getenv('BASE_API_SERVER_URL', 'http://localhost:8000')

base_api_server_url: str = os.getenv('BASE_API_SERVER_URL')
# Menghasilkan dokumentasi OpenAPI dan menulis ke file
openapi_data = app.openapi()

with open(filePath, 'w') as f:
json.dump(app.openapi(), f)
if openapi_data:
with open(file_path, 'w', encoding='utf-8') as f:
json.dump(openapi_data, f, indent=4)
print(f"OpenAPI spec telah disimpan di {file_path}")
else:
print("Peringatan: Tidak ada data OpenAPI yang dihasilkan.")
Loading