Skip to content

Commit f96eb06

Browse files
committed
Merge branch 'query_performance'
2 parents 286e86d + b36c3c8 commit f96eb06

File tree

1 file changed

+38
-68
lines changed

1 file changed

+38
-68
lines changed

app/routes.py

+38-68
Original file line numberDiff line numberDiff line change
@@ -59,26 +59,27 @@ class ApiCompanyTag(Resource):
5959
def get(self):
6060
args = get_parser.parse_args()
6161

62-
tag_names = TagName.query \
63-
.filter_by(name=args['name']) \
62+
companies = Company.query \
63+
.join(CompanyTag) \
64+
.filter(CompanyTag.company_id == Company.id) \
65+
.join(Tag) \
66+
.filter(Tag.id == CompanyTag.tag_id) \
67+
.join(TagName) \
68+
.filter(TagName.tag_id == Tag.id) \
69+
.filter(TagName.name == args['name']) \
6470
.all()
6571

6672
results = []
67-
for tag_name in tag_names:
68-
companies = Company.query \
69-
.join(CompanyTag) \
70-
.filter(CompanyTag.tag_id == tag_name.tag_id) \
71-
.all()
72-
73-
for company in companies:
74-
company_name = CompanyName.query \
75-
.filter_by(company_id=company.id) \
76-
.order_by(CompanyName.language_id) \
77-
.first()
78-
results.append(company_name.name)
73+
for company in companies:
74+
company_name = CompanyName.query \
75+
.filter_by(company_id=company.id) \
76+
.order_by(CompanyName.language_id) \
77+
.first()
78+
results.append(company_name.name)
7979

8080
return jsonify(results)
8181

82+
8283
@api.expect(put_parser)
8384
@api.doc(responses={
8485
200: 'Success',
@@ -129,64 +130,33 @@ def put(self):
129130
def delete(self):
130131
args = delete_parser.parse_args()
131132

132-
company_names = CompanyName.query \
133-
.filter_by(name=args['name']) \
133+
company_tags = CompanyTag.query \
134+
.join(Company) \
135+
.filter(Company.id == CompanyTag.company_id) \
136+
.join(CompanyName) \
137+
.filter(CompanyName.company_id == Company.id) \
138+
.filter(CompanyName.name == args['name']) \
139+
.join(Tag) \
140+
.filter(CompanyTag.tag_id == Tag.id) \
141+
.join(TagName) \
142+
.filter(TagName.tag_id == Tag.id) \
143+
.filter(TagName.name == args['tag']) \
134144
.all()
135-
if not company_names:
136-
abort(status=400, description='Not found company name')
137-
138-
tag_names = TagName.query \
139-
.filter_by(name=args['tag']) \
140-
.all()
141-
if not tag_names:
142-
abort(status=400, description='Not found tag name')
143145

144146
results = {'Deleted': []}
145-
for tag_name in tag_names:
146-
for company_name in company_names:
147-
company_tag = CompanyTag.query \
148-
.filter_by(
149-
company_id=company_name.company_id,
150-
tag_id=tag_name.tag_id,
151-
) \
152-
.first()
153-
154-
if company_tag:
155-
db.session.delete(company_tag)
156-
db.session.commit()
157-
print('delete company_tag', company_tag.id)
158-
159-
deleted_tags = []
160-
tag_name_ids = TagName.query \
161-
.filter_by(
162-
tag_id=tag_name.tag_id
163-
) \
164-
.all()
165-
for tag_name_id in tag_name_ids:
166-
deleted_tags.append(tag_name_id.name)
167-
168-
results['Deleted'].append({args['name']: deleted_tags})
169-
170-
company_tag_count = CompanyTag.query \
147+
for company_tag in company_tags:
148+
tag_name_ids = TagName.query \
171149
.filter_by(
172-
tag_id=tag_name.tag_id,
150+
tag_id=company_tag.tag_id
173151
) \
174-
.count()
175-
176-
if company_tag_count == 0:
177-
TagName.query \
178-
.filter_by(
179-
tag_id=tag_name.tag_id
180-
) \
181-
.delete()
182-
db.session.commit()
183-
tag = Tag.query \
184-
.filter_by(
185-
id=tag_name.tag_id
186-
) \
187-
.first()
188-
db.session.delete(tag)
189-
db.session.commit()
190-
print('delete tag', tag.id)
152+
.all()
153+
154+
deleted_tags = []
155+
for tag_name_id in tag_name_ids:
156+
deleted_tags.append(tag_name_id.name)
157+
results['Deleted'].append({args['name']: deleted_tags})
158+
159+
db.session.delete(company_tag)
160+
db.session.commit()
191161

192162
return jsonify(results)

0 commit comments

Comments
 (0)