catalog_delete.py 2.9 KB
# coding=utf-8
#author:        4N
#createtime:    2021/3/9
#email:         nheweijun@sina.com



from app.models import *
from app.util.component.ApiTemplate import ApiTemplate
class Api(ApiTemplate):
    api_name = "删除目录"
    def process(self):

    
        # 返回结果
        res = {}
        try:
            # 业务逻辑
    
    
            # 啥情况都能删
            # if Table.query.filter_by(catalog_guid=self.para.get("guid")).all():
            #     raise Exception("目录挂载了数据,不可删除,可将数据移出目录后删除!")
            # if Catalog.query.filter_by(pguid=self.para.get("guid")).all():
            #     raise Exception("目录非子目录,不可删除,请先将子目录删除!")
    
            catalog_guid = self.para.get("guid")
    
            catalog =  Catalog.query.filter_by(guid=catalog_guid).one_or_none()
            if not catalog:
                res["msg"]="目录不存在!"
                return res

            else:
    
                # 转移目录下的数据
    
                # # 删除根节点
                # if catalog.pguid.__eq__("0"):
                #     database_guid = catalog.database_guid
                #     Table.query.filter_by(database_guid=database_guid).update({"catalog_guid": None})
                #     catalogs = Catalog.query.filter(Catalog.path.like("%" + catalog_guid + "%")).all()
                #     for cata in catalogs:
                #         db.session.delete(cata)
                #
                # # 获取所有子目录:
                # else:
    
                pguid = catalog.pguid
                # 所有目录
                catalogs = Catalog.query.filter(Catalog.path.like("%" + catalog_guid + "%")).all()
                for cata in catalogs:
                    if pguid.__eq__("0"):
                        Table.query.filter_by(catalog_guid=cata.guid).update({"catalog_guid": None})
                        db.session.delete(cata)
                    else:
                        Table.query.filter_by(catalog_guid=cata.guid).update({"catalog_guid": pguid})
                        db.session.delete(cata)
    
                db.session.commit()
                res["msg"] = "目录删除成功!"
                res["result"] = True
        except Exception as e:
            db.session.rollback()
            raise e
        return res
    
    
    api_doc = {
        "tags": ["矢量数据目录接口"],
        "parameters": [
            {"name": "guid",
             "in": "formData",
             "type": "string",
             "description": "目录guid", "required": "true"},
        ],
        "responses": {
            200: {
                "schema": {
                    "properties": {
                    }
                }
            }
        }
    }