add CRUD with variables

This commit is contained in:
Syahdan Hafiz Ashari 2025-05-27 12:20:26 +07:00
parent 53beac9893
commit 17f05894bb

View File

@ -5,7 +5,8 @@
# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. # This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
# You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/. # You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.
from bottle import Bottle, route import json
from bottle import Bottle, route, response, request
from config import directory from config import directory
import templates.plain.main as template_public import templates.plain.main as template_public
@ -13,6 +14,14 @@ import modules.public.home as public_home
app = Bottle() app = Bottle()
data = {
"foods": [
"Pizza",
"Burger",
"Pasta",
]
}
@app.route('/') @app.route('/')
def index(): def index():
params = { params = {
@ -22,6 +31,50 @@ def index():
} }
return public_home.main().html(params) return public_home.main().html(params)
@app.route('/api/<crud>') @app.route('/api/<crud>', methods=['GET', 'POST', 'PUT', 'DELETE'])
def index(crud): def index(crud):
return f'api {crud}' response.content_type = 'application/json'
result = {
"status": "error",
"message": f"API endpoint for /api/{crud} is not implemented yet."
}
payload = request.json
if crud == "create":
data["foods"].append(payload["food"])
id = len(data["foods"]) - 1
result["status"] = "success"
result["message"] = f'{payload["food"]} is added to the list.'
result["data"] = {
"id": id,
"food": data["foods"][id]
}
elif crud == "read":
result["status"] = "success"
result["message"] = "Reading foods."
result["data"] = data["foods"]
elif crud == "update":
food_id = payload["id"]
food = payload["food"]
data["foods"][food_id] = food
result["status"] = "success"
result["message"] = f'{food} is updated.'
result["data"] = {
"food": data["foods"][food_id]
}
elif crud == "delete":
food_id = payload["id"]
food = data["foods"].pop(food_id)
result["status"] = "success"
result["message"] = f'{food} is deleted'
result["data"] = {
"food": food
}
return json.dumps(result, indent = 2).encode()