refs #0 The root commit.
This commit is contained in:
68
back/core/crud.py
Normal file
68
back/core/crud.py
Normal file
@@ -0,0 +1,68 @@
|
||||
import os
|
||||
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
|
||||
def add_item(db: Session, cls, item):
|
||||
db_item = cls(**item.dict())
|
||||
db.add(db_item)
|
||||
db.commit()
|
||||
db.refresh(db_item)
|
||||
return db_item
|
||||
|
||||
|
||||
def view_item(db: Session, cls, item_id: int):
|
||||
return db.query(cls).filter(cls.id == item_id).first()
|
||||
|
||||
|
||||
def edit_item(db: Session, cls, item_id: int, item):
|
||||
db_item = db.query(cls).filter(cls.id == item_id).first()
|
||||
for key, value in item.dict().items():
|
||||
setattr(db_item, key, value)
|
||||
db.commit()
|
||||
db.refresh(db_item)
|
||||
return db_item
|
||||
|
||||
|
||||
def remove_item(db: Session, cls, item_id: int):
|
||||
db_item = db.query(cls).filter(cls.id == item_id).first()
|
||||
db.delete(db_item)
|
||||
db.commit()
|
||||
return db_item
|
||||
|
||||
|
||||
def view_items(db: Session, cls, skip: int = 0, limit: int = 100):
|
||||
return db.query(cls).offset(skip).limit(limit).all()
|
||||
|
||||
|
||||
def add_file(db: Session, cls, item_id: int, field: str, file):
|
||||
content = file.file.read()
|
||||
|
||||
if content:
|
||||
file_path = os.path.join("media", file.filename)
|
||||
else:
|
||||
file_path = None
|
||||
|
||||
if file_path:
|
||||
with open(file_path, "wb") as f:
|
||||
f.write(content)
|
||||
|
||||
db_item = db.query(cls).filter(cls.id == item_id).first()
|
||||
setattr(db_item, field, file_path)
|
||||
db.commit()
|
||||
db.refresh(db_item)
|
||||
|
||||
return db_item
|
||||
|
||||
|
||||
def remove_file(db: Session, cls, item_id: int, field: str):
|
||||
db_item = db.query(cls).filter(cls.id == item_id).first()
|
||||
file_path = getattr(db_item, field)
|
||||
if file_path:
|
||||
os.remove(file_path)
|
||||
|
||||
setattr(db_item, field, None)
|
||||
db.commit()
|
||||
db.refresh(db_item)
|
||||
|
||||
return db_item
|
||||
Reference in New Issue
Block a user