feat: 初始化工程

This commit is contained in:
2026-09-09 18:42:37 +08:00
commit 31af6e07e2
29 changed files with 1208 additions and 0 deletions

11
routers/__init__.py Normal file
View File

@@ -0,0 +1,11 @@
from .patch import router as patch_router
from .crop import router as crop_router
from .record import router as record_router
from .file import router as file_router
routers = [
patch_router,
crop_router,
record_router,
file_router,
]

29
routers/crop.py Normal file
View File

@@ -0,0 +1,29 @@
from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.orm import Session
from config.database import get_db
from schemas.patch import CropCreate, CropUpdate
from service import crop_service
router = APIRouter(prefix="/crops", tags=["crops"])
@router.post("", response_model=bool)
def create(data: CropCreate, db: Session = Depends(get_db)):
return crop_service.create_crop(db, data)
@router.put("/{crop_id}", response_model=bool)
def update(crop_id: int, data: CropUpdate, db: Session = Depends(get_db)):
crop = crop_service.update_crop(db, crop_id, data)
if not crop:
raise HTTPException(404, "Crop not found")
return crop
@router.delete("/{crop_id}", response_model=bool)
def delete(crop_id: int, db: Session = Depends(get_db)):
crop = crop_service.delete_crop(db, crop_id)
if not crop:
raise HTTPException(404, "Crop not found")
return crop

9
routers/file.py Normal file
View File

@@ -0,0 +1,9 @@
from fastapi import APIRouter, UploadFile, File
from service import file_service
router = APIRouter(prefix="/file", tags=["文件"])
@router.post("/upload", summary="上传文件", response_model=str)
async def upload(file: UploadFile = File(..., description="要上传的文件")):
return await file_service.upload_file(file)

43
routers/patch.py Normal file
View File

@@ -0,0 +1,43 @@
from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.orm import Session
from config.database import get_db
from schemas.patch import PatchResponse, PatchCreate, PatchUpdate
from service import patch_service
from service.patch_service import get_patch
router = APIRouter(prefix="/patches", tags=["patches"])
@router.post("", response_model=bool)
def create(data: PatchCreate, db: Session = Depends(get_db)):
return patch_service.create_patch(db, data)
@router.get("", response_model=list[PatchResponse])
def list_all(db: Session = Depends(get_db)):
return patch_service.get_patches(db)
@router.get("/{patch_id}", response_model=PatchResponse)
def get_one(patch_id: int, db: Session = Depends(get_db)):
patch = get_patch(db, patch_id)
if not patch:
raise HTTPException(404, "Patch not found")
return patch
@router.put("/{patch_id}", response_model=bool)
def update(patch_id: int, data: PatchUpdate, db: Session = Depends(get_db)):
patch = patch_service.update_patch(db, patch_id, data)
if not patch:
raise HTTPException(404, "Patch not found")
return patch
@router.delete("/{patch_id}", response_model=bool)
def delete(patch_id: int, db: Session = Depends(get_db)):
patch = patch_service.delete_patch(db, patch_id)
if not patch:
raise HTTPException(404, "Patch not found")
return patch

42
routers/record.py Normal file
View File

@@ -0,0 +1,42 @@
from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.orm import Session
from config.database import get_db
from schemas.patch import RecordResponse, RecordCreate, RecordUpdate
from service import record_service
router = APIRouter(prefix="/records", tags=["records"])
@router.post("", response_model=bool)
def create(data: RecordCreate, db: Session = Depends(get_db)):
return record_service.create_record(db, data)
@router.get("/{record_id}", response_model=RecordResponse)
def get_one(record_id: int, db: Session = Depends(get_db)):
record = record_service.get_record(db, record_id)
if not record:
raise HTTPException(404, "Record not found")
return record
@router.get("/crop/{crop_id}", response_model=list[RecordResponse])
def list_by_crop(crop_id: int, db: Session = Depends(get_db)):
return record_service.get_records_by_crop(db, crop_id)
@router.put("/{record_id}", response_model=bool)
def update(record_id: int, data: RecordUpdate, db: Session = Depends(get_db)):
record = record_service.update_record(db, record_id, data)
if not record:
raise HTTPException(404, "Record not found")
return record
@router.delete("/{record_id}", response_model=bool)
def delete(record_id: int, db: Session = Depends(get_db)):
record = record_service.delete_record(db, record_id)
if not record:
raise HTTPException(404, "Record not found")
return record