Skip to content

Commit 04586ce

Browse files
committed
QOL improvement
1 parent dc6b30f commit 04586ce

File tree

75 files changed

+2093
-23
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

75 files changed

+2093
-23
lines changed
Binary file not shown.
Binary file not shown.
Binary file not shown.

GeneratedCode/blog/database.py

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import sqlite3
2+
from typing import List, Dict, Any
3+
4+
DB_NAME = "C:/2024/i/recoil/blog.db"
5+
6+
def execute_query(query: str, params: tuple = ()) -> List[Dict[str, Any]]:
7+
conn = sqlite3.connect(DB_NAME)
8+
conn.row_factory = sqlite3.Row
9+
cursor = conn.cursor()
10+
cursor.execute(query, params)
11+
result = [dict(row) for row in cursor.fetchall()]
12+
conn.commit()
13+
conn.close()
14+
return result
15+
16+
def execute_insert(query: str, params: tuple = ()) -> int:
17+
conn = sqlite3.connect(DB_NAME)
18+
cursor = conn.cursor()
19+
cursor.execute(query, params)
20+
last_id = cursor.lastrowid
21+
conn.commit()
22+
conn.close()
23+
return last_id
24+
25+
def execute_update_delete(query: str, params: tuple = ()) -> int:
26+
conn = sqlite3.connect(DB_NAME)
27+
cursor = conn.cursor()
28+
cursor.execute(query, params)
29+
affected_rows = cursor.rowcount
30+
conn.commit()
31+
conn.close()
32+
return affected_rows

GeneratedCode/blog/main.py

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
from fastapi import FastAPI
2+
from database import DB_NAME
3+
from routers import users
4+
from routers import categories
5+
from routers import posts
6+
from routers import comments
7+
8+
app = FastAPI()
9+
10+
# Include routers
11+
app.include_router(users.router)
12+
app.include_router(categories.router)
13+
app.include_router(posts.router)
14+
app.include_router(comments.router)
15+
16+
@app.get("/")
17+
async def root():
18+
return {"message": "Welcome to the API"}
19+
20+
if __name__ == "__main__":
21+
import uvicorn
22+
uvicorn.run(app, host="0.0.0.0", port=8000)

GeneratedCode/blog/models.py

+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
from pydantic import BaseModel
2+
from typing import Optional
3+
from datetime import datetime
4+
5+
class UsersBase(BaseModel):
6+
Username: str
7+
Email: str
8+
PasswordHash: str
9+
CreatedAt: str
10+
IsAdmin: bool
11+
12+
13+
class UsersCreate(UsersBase):
14+
pass
15+
16+
class Users(UsersBase):
17+
Id: int
18+
19+
class CategoriesBase(BaseModel):
20+
Name: str
21+
Description: Optional[str] = None
22+
23+
24+
class CategoriesCreate(CategoriesBase):
25+
pass
26+
27+
class Categories(CategoriesBase):
28+
Id: int
29+
30+
class PostsBase(BaseModel):
31+
Title: str
32+
Content: str
33+
CreatedAt: str
34+
UpdatedAt: Optional[datetime] = None
35+
AuthorId: int
36+
CategoryId: int
37+
38+
39+
class PostsCreate(PostsBase):
40+
pass
41+
42+
class Posts(PostsBase):
43+
Id: int
44+
45+
class CommentsBase(BaseModel):
46+
Content: str
47+
CreatedAt: str
48+
PostId: int
49+
UserId: int
50+
51+
52+
class CommentsCreate(CommentsBase):
53+
pass
54+
55+
class Comments(CommentsBase):
56+
Id: int
57+

GeneratedCode/blog/routers/__init__.py

Whitespace-only changes.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
from fastapi import APIRouter, HTTPException, Query, Depends
2+
from typing import List, Optional
3+
from models import Categories, CategoriesCreate
4+
from database import execute_query, execute_insert, execute_update_delete
5+
6+
router = APIRouter(
7+
prefix="/categories",
8+
tags=["Categories"]
9+
)
10+
11+
@router.get("/", response_model=List[Categories])
12+
async def get_categories(
13+
skip: int = Query(0, ge=0),
14+
limit: int = Query(100, ge=1, le=1000),
15+
sort_by: Optional[str] = None,
16+
order: Optional[str] = Query(None, pattern="^(asc|desc)$")
17+
):
18+
query = "SELECT * FROM Categories"
19+
if sort_by:
20+
query += f" ORDER BY {sort_by}"
21+
if order:
22+
query += f" {order.upper()}"
23+
query += " LIMIT ? OFFSET ?"
24+
return execute_query(query, (limit, skip))
25+
26+
@router.get("/{item_id}", response_model=Categories)
27+
async def get_categories_item(item_id: int):
28+
query = "SELECT * FROM Categories WHERE Id = ?"
29+
result = execute_query(query, (item_id,))
30+
if not result:
31+
raise HTTPException(status_code=404, detail="Item not found")
32+
return result[0]
33+
34+
@router.post("/", response_model=Categories)
35+
async def create_categories(item: CategoriesCreate):
36+
columns = ", ".join(item.dict().keys())
37+
placeholders = ", ".join("?" * len(item.dict()))
38+
query = f"INSERT INTO Categories ({columns}) VALUES ({placeholders})"
39+
last_id = execute_insert(query, tuple(item.dict().values()))
40+
return {**item.dict(), "Id": last_id}
41+
42+
@router.put("/{item_id}", response_model=Categories)
43+
async def update_categories(item_id: int, item: CategoriesCreate):
44+
set_clause = ", ".join(f"{k} = ?" for k in item.dict().keys())
45+
query = f"UPDATE Categories SET {set_clause} WHERE Id = ?"
46+
values = tuple(item.dict().values()) + (item_id,)
47+
affected_rows = execute_update_delete(query, values)
48+
if affected_rows == 0:
49+
raise HTTPException(status_code=404, detail="Item not found")
50+
return {**item.dict(), "Id": item_id}
51+
52+
@router.delete("/{item_id}")
53+
async def delete_categories(item_id: int):
54+
query = "DELETE FROM Categories WHERE Id = ?"
55+
affected_rows = execute_update_delete(query, (item_id,))
56+
if affected_rows == 0:
57+
raise HTTPException(status_code=404, detail="Item not found")
58+
return {"message": "Item deleted successfully"}
+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
from fastapi import APIRouter, HTTPException, Query, Depends
2+
from typing import List, Optional
3+
from models import Comments, CommentsCreate
4+
from database import execute_query, execute_insert, execute_update_delete
5+
6+
router = APIRouter(
7+
prefix="/comments",
8+
tags=["Comments"]
9+
)
10+
11+
@router.get("/", response_model=List[Comments])
12+
async def get_comments(
13+
skip: int = Query(0, ge=0),
14+
limit: int = Query(100, ge=1, le=1000),
15+
sort_by: Optional[str] = None,
16+
order: Optional[str] = Query(None, pattern="^(asc|desc)$")
17+
):
18+
query = "SELECT * FROM Comments"
19+
if sort_by:
20+
query += f" ORDER BY {sort_by}"
21+
if order:
22+
query += f" {order.upper()}"
23+
query += " LIMIT ? OFFSET ?"
24+
return execute_query(query, (limit, skip))
25+
26+
@router.get("/{item_id}", response_model=Comments)
27+
async def get_comments_item(item_id: int):
28+
query = "SELECT * FROM Comments WHERE Id = ?"
29+
result = execute_query(query, (item_id,))
30+
if not result:
31+
raise HTTPException(status_code=404, detail="Item not found")
32+
return result[0]
33+
34+
@router.post("/", response_model=Comments)
35+
async def create_comments(item: CommentsCreate):
36+
columns = ", ".join(item.dict().keys())
37+
placeholders = ", ".join("?" * len(item.dict()))
38+
query = f"INSERT INTO Comments ({columns}) VALUES ({placeholders})"
39+
last_id = execute_insert(query, tuple(item.dict().values()))
40+
return {**item.dict(), "Id": last_id}
41+
42+
@router.put("/{item_id}", response_model=Comments)
43+
async def update_comments(item_id: int, item: CommentsCreate):
44+
set_clause = ", ".join(f"{k} = ?" for k in item.dict().keys())
45+
query = f"UPDATE Comments SET {set_clause} WHERE Id = ?"
46+
values = tuple(item.dict().values()) + (item_id,)
47+
affected_rows = execute_update_delete(query, values)
48+
if affected_rows == 0:
49+
raise HTTPException(status_code=404, detail="Item not found")
50+
return {**item.dict(), "Id": item_id}
51+
52+
@router.delete("/{item_id}")
53+
async def delete_comments(item_id: int):
54+
query = "DELETE FROM Comments WHERE Id = ?"
55+
affected_rows = execute_update_delete(query, (item_id,))
56+
if affected_rows == 0:
57+
raise HTTPException(status_code=404, detail="Item not found")
58+
return {"message": "Item deleted successfully"}

GeneratedCode/blog/routers/posts.py

+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
from fastapi import APIRouter, HTTPException, Query, Depends
2+
from typing import List, Optional
3+
from models import Posts, PostsCreate
4+
from database import execute_query, execute_insert, execute_update_delete
5+
6+
router = APIRouter(
7+
prefix="/posts",
8+
tags=["Posts"]
9+
)
10+
11+
@router.get("/", response_model=List[Posts])
12+
async def get_posts(
13+
skip: int = Query(0, ge=0),
14+
limit: int = Query(100, ge=1, le=1000),
15+
sort_by: Optional[str] = None,
16+
order: Optional[str] = Query(None, pattern="^(asc|desc)$")
17+
):
18+
query = "SELECT * FROM Posts"
19+
if sort_by:
20+
query += f" ORDER BY {sort_by}"
21+
if order:
22+
query += f" {order.upper()}"
23+
query += " LIMIT ? OFFSET ?"
24+
return execute_query(query, (limit, skip))
25+
26+
@router.get("/{item_id}", response_model=Posts)
27+
async def get_posts_item(item_id: int):
28+
query = "SELECT * FROM Posts WHERE Id = ?"
29+
result = execute_query(query, (item_id,))
30+
if not result:
31+
raise HTTPException(status_code=404, detail="Item not found")
32+
return result[0]
33+
34+
@router.post("/", response_model=Posts)
35+
async def create_posts(item: PostsCreate):
36+
columns = ", ".join(item.dict().keys())
37+
placeholders = ", ".join("?" * len(item.dict()))
38+
query = f"INSERT INTO Posts ({columns}) VALUES ({placeholders})"
39+
last_id = execute_insert(query, tuple(item.dict().values()))
40+
return {**item.dict(), "Id": last_id}
41+
42+
@router.put("/{item_id}", response_model=Posts)
43+
async def update_posts(item_id: int, item: PostsCreate):
44+
set_clause = ", ".join(f"{k} = ?" for k in item.dict().keys())
45+
query = f"UPDATE Posts SET {set_clause} WHERE Id = ?"
46+
values = tuple(item.dict().values()) + (item_id,)
47+
affected_rows = execute_update_delete(query, values)
48+
if affected_rows == 0:
49+
raise HTTPException(status_code=404, detail="Item not found")
50+
return {**item.dict(), "Id": item_id}
51+
52+
@router.delete("/{item_id}")
53+
async def delete_posts(item_id: int):
54+
query = "DELETE FROM Posts WHERE Id = ?"
55+
affected_rows = execute_update_delete(query, (item_id,))
56+
if affected_rows == 0:
57+
raise HTTPException(status_code=404, detail="Item not found")
58+
return {"message": "Item deleted successfully"}

GeneratedCode/blog/routers/users.py

+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
from fastapi import APIRouter, HTTPException, Query, Depends
2+
from typing import List, Optional
3+
from models import Users, UsersCreate
4+
from database import execute_query, execute_insert, execute_update_delete
5+
6+
router = APIRouter(
7+
prefix="/users",
8+
tags=["Users"]
9+
)
10+
11+
@router.get("/", response_model=List[Users])
12+
async def get_users(
13+
skip: int = Query(0, ge=0),
14+
limit: int = Query(100, ge=1, le=1000),
15+
sort_by: Optional[str] = None,
16+
order: Optional[str] = Query(None, pattern="^(asc|desc)$")
17+
):
18+
query = "SELECT * FROM Users"
19+
if sort_by:
20+
query += f" ORDER BY {sort_by}"
21+
if order:
22+
query += f" {order.upper()}"
23+
query += " LIMIT ? OFFSET ?"
24+
return execute_query(query, (limit, skip))
25+
26+
@router.get("/{item_id}", response_model=Users)
27+
async def get_users_item(item_id: int):
28+
query = "SELECT * FROM Users WHERE Id = ?"
29+
result = execute_query(query, (item_id,))
30+
if not result:
31+
raise HTTPException(status_code=404, detail="Item not found")
32+
return result[0]
33+
34+
@router.post("/", response_model=Users)
35+
async def create_users(item: UsersCreate):
36+
columns = ", ".join(item.dict().keys())
37+
placeholders = ", ".join("?" * len(item.dict()))
38+
query = f"INSERT INTO Users ({columns}) VALUES ({placeholders})"
39+
last_id = execute_insert(query, tuple(item.dict().values()))
40+
return {**item.dict(), "Id": last_id}
41+
42+
@router.put("/{item_id}", response_model=Users)
43+
async def update_users(item_id: int, item: UsersCreate):
44+
set_clause = ", ".join(f"{k} = ?" for k in item.dict().keys())
45+
query = f"UPDATE Users SET {set_clause} WHERE Id = ?"
46+
values = tuple(item.dict().values()) + (item_id,)
47+
affected_rows = execute_update_delete(query, values)
48+
if affected_rows == 0:
49+
raise HTTPException(status_code=404, detail="Item not found")
50+
return {**item.dict(), "Id": item_id}
51+
52+
@router.delete("/{item_id}")
53+
async def delete_users(item_id: int):
54+
query = "DELETE FROM Users WHERE Id = ?"
55+
affected_rows = execute_update_delete(query, (item_id,))
56+
if affected_rows == 0:
57+
raise HTTPException(status_code=404, detail="Item not found")
58+
return {"message": "Item deleted successfully"}
Binary file not shown.
Binary file not shown.
Binary file not shown.

GeneratedCode/spotify/database.py

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import sqlite3
2+
from typing import List, Dict, Any
3+
4+
DB_NAME = "C:/2024/h/Moshi/Moshi.MyMusic/spotify.db"
5+
6+
def execute_query(query: str, params: tuple = ()) -> List[Dict[str, Any]]:
7+
conn = sqlite3.connect(DB_NAME)
8+
conn.row_factory = sqlite3.Row
9+
cursor = conn.cursor()
10+
cursor.execute(query, params)
11+
result = [dict(row) for row in cursor.fetchall()]
12+
conn.commit()
13+
conn.close()
14+
return result
15+
16+
def execute_insert(query: str, params: tuple = ()) -> int:
17+
conn = sqlite3.connect(DB_NAME)
18+
cursor = conn.cursor()
19+
cursor.execute(query, params)
20+
last_id = cursor.lastrowid
21+
conn.commit()
22+
conn.close()
23+
return last_id
24+
25+
def execute_update_delete(query: str, params: tuple = ()) -> int:
26+
conn = sqlite3.connect(DB_NAME)
27+
cursor = conn.cursor()
28+
cursor.execute(query, params)
29+
affected_rows = cursor.rowcount
30+
conn.commit()
31+
conn.close()
32+
return affected_rows

0 commit comments

Comments
 (0)