follow UAS spec

This commit is contained in:
Syahdan Hafiz Ashari 2025-07-15 13:54:40 +07:00
parent 03b2647f1e
commit 5a83c3d4c7
5 changed files with 60 additions and 63 deletions

View File

@ -13,6 +13,7 @@ post {
body:json { body:json {
{ {
"name": "Test Lagi", "name": "Test Lagi",
"phone": "080000000002" "price": "10000",
"qty": 10
} }
} }

View File

@ -13,7 +13,8 @@ put {
body:json { body:json {
{ {
"id": 4, "id": 4,
"name": "Syahdan", "name": "Test Update",
"phone": "082112586824" "price": "15000",
"qty": 5
} }
} }

View File

@ -1,8 +1,8 @@
db_main = { db_main = {
'host' : 'localhost', 'host' : 'localhost',
'user' : 'root', 'user' : 'root',
'password' : '', 'password' : 'anjaymaria',
'database' : 'your_db', 'database' : 'inventory',
'port' : 3306, 'port' : 3306,
'autocommit' : True, 'autocommit' : True,
} }

View File

@ -18,22 +18,10 @@ app = Bottle()
# Sample data to simulate a database # Sample data to simulate a database
# also serves as a model reminder # also serves as a model reminder
data = { data = {
"member": [ "items": [
{ {"id": 1, "name": "Kopi", "price": 200.00, "qty": 10},
"id": 1, {"id": 2, "name": "Teh", "price": 200.00, "qty": 20},
"name": "Syahdan", {"id": 3, "name": "Susu", "price": 300.00, "qty": 30}
"phone": "081234567890"
},
{
"id": 2,
"name": "Dita",
"phone": "081234567891"
},
{
"id": 3,
"name": "Aji",
"phone": "081234567892"
}
] ]
} }
@ -60,76 +48,81 @@ def index(crud):
payload = request.json payload = request.json
if crud == "create": if crud == "create":
name = payload["name"] name = payload["name"]
phone = payload["phone"] price = payload["price"]
qty = payload["qty"]
if not name or not phone: if not name or not price or not qty:
result["status"] = "error" result["status"] = "error"
result["message"] = "Name and phone are required." result["message"] = "Name, price, and quantity are required."
return json.dumps(result, indent = 2).encode() return json.dumps(result, indent = 2).encode()
data_id = cursor.execute("INSERT INTO `member` (name, phone) VALUES (%s, %s);", (name, phone)) data_id = cursor.execute("INSERT INTO `items` (name, price, qty) VALUES (%s, %s, %s);", (name, price, qty))
result["status"] = "success" result["status"] = "success"
result["message"] = f'{payload["name"]} is added to the list.' result["message"] = f'{payload["name"]} is added to the list.'
result["data"] = { result["data"] = {
"name": name, "name": name,
"phone": phone "price": price,
"qty": qty
} }
elif crud == "read": elif crud == "read":
cursor.execute("SELECT * FROM `member`;") cursor.execute("SELECT * FROM `items`;")
members = cursor.fetchall() items = cursor.fetchall()
if not members: if not items:
result["status"] = "error" result["status"] = "error"
result["message"] = "No members found." result["message"] = "No items found."
return json.dumps(result, indent = 2).encode() return json.dumps(result, indent = 2).encode()
result["status"] = "success" result["status"] = "success"
result["message"] = "Members collected." result["message"] = "Items collected."
result["data"] = members result["data"] = items
elif crud == "update": elif crud == "update":
member_id = payload["id"] item_id = payload["id"]
name = payload["name"] name = payload["name"]
phone = payload["phone"] price = payload["price"]
qty = payload["qty"]
cursor.execute("UPDATE `member` SET `name` = %s, `phone` = %s WHERE `id` = %s ;" , (name, phone, member_id) ) cursor.execute("UPDATE `items` SET `name` = %s, `price` = %s, `qty` = %s WHERE `id` = %s ;" , (name, price, qty, item_id) )
db_main.commit() db_main.commit()
cursor.execute("SELECT * FROM `member` WHERE `id` = %s;", (member_id,)) cursor.execute("SELECT * FROM `items` WHERE `id` = %s;", (item_id,))
member = cursor.fetchone() item = cursor.fetchone()
if not member: if not item:
result["status"] = "error" result["status"] = "error"
result["message"] = f'Member with ID {member_id} not found.' result["message"] = f'Item with ID {item_id} not found.'
return json.dumps(result, indent = 2).encode() return json.dumps(result, indent = 2).encode()
result["status"] = "success" result["status"] = "success"
result["message"] = f'Member with ID {member_id} is updated.' result["message"] = f'Item with ID {item_id} is updated.'
result["data"] = { result["data"] = {
"id" : member["id"], "id" : item["id"],
"name" : member["name"], "name" : item["name"],
"phone": member["phone"] "price": item["price"],
"qty" : item["qty"]
} }
elif crud == "delete": elif crud == "delete":
member_id = payload["id"] item_id = payload["id"]
cursor.execute("SELECT * FROM `member` WHERE `id` = %s;", (member_id,)) cursor.execute("SELECT * FROM `items` WHERE `id` = %s;", (item_id,))
member = cursor.fetchone() item = cursor.fetchone()
if not member: if not item:
result["status"] = "error" result["status"] = "error"
result["message"] = f'Member with ID {member_id} not found.' result["message"] = f'Item with ID {item_id} not found.'
return json.dumps(result, indent = 2).encode() return json.dumps(result, indent = 2).encode()
cursor.execute("DELETE FROM `member` WHERE `id` = %s;", (member_id,)) cursor.execute("DELETE FROM `items` WHERE `id` = %s;", (item_id,))
result["status"] = "success" result["status"] = "success"
result["message"] = f'Member with ID {member_id} is deleted.' result["message"] = f'Item with ID {item_id} is deleted.'
result["data"] = { result["data"] = {
"id" : member["id"], "id" : item["id"],
"name" : member["name"], "name" : item["name"],
"phone": member["phone"] "price": item["price"],
"qty" : item["qty"]
} }
return json.dumps(result, indent = 2).encode() return json.dumps(result, indent = 2).encode()

View File

@ -1,11 +1,13 @@
CREATE TABLE member ( CREATE DATABASE IF NOT EXISTS inventory;
CREATE TABLE items (
id int(11) not null auto_increment primary key, id int(11) not null auto_increment primary key,
name varchar(36) not null, name varchar(36) not null,
phone varchar(14) null price int(10) not null,
qty int(11) not null
); );
INSERT INTO member VALUES INSERT INTO items VALUES
(DEFAULT, 'Syahdan', '081111111111'), (DEFAULT, 'Kopi', 200, 10),
(DEFAULT, 'Hafiz', '082222222222'), (DEFAULT, 'Teh', 200, 20),
(DEFAULT, 'Ashari', '083333333333'); (DEFAULT, 'Susu', 300, 30);