Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
This repository was archived by the owner on Nov 8, 2022. It is now read-only.

Commitaa54b76

Browse files
committed
refactor(article-curd): update tags
1 parent46e52c5 commitaa54b76

File tree

1 file changed

+66
-85
lines changed

1 file changed

+66
-85
lines changed

‎lib/groupher_server/cms/delegates/article_curd.ex‎

Lines changed: 66 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -95,50 +95,6 @@ defmodule GroupherServer.CMS.Delegate.ArticleCURD do
9595
end
9696
end
9797

98-
# for create content step in Multi.new
99-
defpexec_create_content(target,attrs,%Author{id:aid},%Community{id:cid})do
100-
target
101-
|>struct()
102-
|>target.changeset(attrs)
103-
|>Ecto.Changeset.put_change(:author_id,aid)
104-
|>Ecto.Changeset.put_change(:origial_community_id,integerfy(cid))
105-
|>Repo.insert()
106-
end
107-
108-
defpexec_set_topic(thread,id,%{topic:topic})do
109-
ArticleOperation.set_topic(%Topic{title:topic},thread,id)
110-
end
111-
112-
# if topic is not provide, use posts as default
113-
defpexec_set_topic(thread,id,_attrs)do
114-
ArticleOperation.set_topic(%Topic{title:"posts"},thread,id)
115-
end
116-
117-
defpexec_set_tag(thread,id,%{tags:tags})do
118-
trydo
119-
Enum.each(tags,fntag->
120-
{:ok,_}=ArticleOperation.set_tag(thread,%Tag{id:tag.id},id)
121-
end)
122-
123-
{:ok,"psss"}
124-
rescue
125-
_->{:error,[message:"set tag",code:ecode(:create_fails)]}
126-
end
127-
end
128-
129-
defpexec_set_tag(_thread,_id,_attrs),do:{:ok,:pass}
130-
131-
# TODO: flag 逻辑似乎有问题
132-
defpexec_set_community_flag(%Community{}=community,content,%{flag:_flag})do
133-
ArticleOperation.set_community_flags(community,content,%{
134-
trash:false
135-
})
136-
end
137-
138-
defpexec_set_community_flag(_community,_content,_action)do
139-
{:ok,:pass}
140-
end
141-
14298
@doc"""
14399
update a content(post/job ...)
144100
"""
@@ -148,7 +104,7 @@ defmodule GroupherServer.CMS.Delegate.ArticleCURD do
148104
ORM.update(content,args)
149105
end)
150106
|>Multi.run(:update_tag,fn_,_->
151-
update_tags(content,args.tags)
107+
exec_update_tags(content,args.tags)
152108
end)
153109
|>Repo.transaction()
154110
|>update_content_result()
@@ -446,60 +402,85 @@ defmodule GroupherServer.CMS.Delegate.ArticleCURD do
446402
{:error,[message:"log action",code:ecode(:create_fails)]}
447403
end
448404

449-
defpupdate_tags(_content,tags_ids)whenlength(tags_ids)==0,do:{:ok,:pass}
405+
# except Job, other content will just pass, should use set_tag function instead
406+
# defp exec_update_tags(_, _tags_ids), do: {:ok, :pass}
450407

451-
# Job is special, the tags in job only represent city, so everytime update
452-
# tags on job content, should be override the old ones, in this way, every
453-
# communiies contains this job will have the same city info
454-
defpupdate_tags(%CMS.Job{}=content,tags_ids)do
455-
with{:ok,content}<-ORM.find(CMS.Job,content.id,preload::tags)do
456-
concat_tags(content,tags_ids)
457-
end
408+
defpupdate_content_result({:ok,%{update_content:result}}),do:{:ok,result}
409+
defpupdate_content_result({:error,:update_content,result,_steps}),do:{:error,result}
410+
defpupdate_content_result({:error,:update_tag,result,_steps}),do:{:error,result}
411+
412+
defpcontent_id(:post,id),do:%{post_id:id}
413+
defpcontent_id(:job,id),do:%{job_id:id}
414+
defpcontent_id(:repo,id),do:%{repo_id:id}
415+
defpcontent_id(:video,id),do:%{video_id:id}
416+
417+
# for create content step in Multi.new
418+
defpexec_create_content(target,attrs,%Author{id:aid},%Community{id:cid})do
419+
target
420+
|>struct()
421+
|>target.changeset(attrs)
422+
|>Ecto.Changeset.put_change(:author_id,aid)
423+
|>Ecto.Changeset.put_change(:origial_community_id,integerfy(cid))
424+
|>Repo.insert()
458425
end
459426

460-
defpupdate_tags(%CMS.Post{}=content,tags_ids)do
461-
with{:ok,content}<-ORM.find(CMS.Post,content.id,preload::tags)do
462-
concat_tags(content,tags_ids)
463-
end
427+
defpexec_set_topic(thread,id,%{topic:topic})do
428+
ArticleOperation.set_topic(%Topic{title:topic},thread,id)
464429
end
465430

466-
defpupdate_tags(%CMS.Video{}=content,tags_ids)do
467-
with{:ok,content}<-ORM.find(CMS.Video,content.id,preload::tags)do
468-
concat_tags(content,tags_ids)
469-
end
431+
# if topic is not provide, use posts as default
432+
defpexec_set_topic(thread,id,_attrs)do
433+
ArticleOperation.set_topic(%Topic{title:"posts"},thread,id)
470434
end
471435

472-
# except Job, other content will just pass, should use set_tag function instead
473-
defpupdate_tags(_,_tags_ids),do:{:ok,:pass}
436+
defpexec_set_tag(thread,id,%{tags:tags})do
437+
trydo
438+
Enum.each(tags,fntag->
439+
{:ok,_}=ArticleOperation.set_tag(thread,%Tag{id:tag.id},id)
440+
end)
474441

475-
defpconcat_tags(content,tags_ids)do
476-
tags=
477-
Enum.reduce(tags_ids,[],fnt,acc->
478-
{:ok,tag}=ORM.find(Tag,t.id)
442+
{:ok,"psss"}
443+
rescue
444+
_->{:error,[message:"set tag",code:ecode(:create_fails)]}
445+
end
446+
end
479447

480-
casetag.title=="refined"do
481-
true->
482-
acc
448+
defpexec_set_tag(_thread,_id,_attrs),do:{:ok,:pass}
483449

484-
false->
485-
acc++[tag]
486-
end
487-
end)
450+
# TODO: flag 逻辑似乎有问题
451+
defpexec_set_community_flag(%Community{}=community,content,%{flag:_flag})do
452+
ArticleOperation.set_community_flags(community,content,%{
453+
trash:false
454+
})
455+
end
488456

489-
content
490-
|>Ecto.Changeset.change()
491-
|>Ecto.Changeset.put_assoc(:tags,tags)
492-
|>Repo.update()
457+
defpexec_set_community_flag(_community,_content,_action)do
458+
{:ok,:pass}
493459
end
494460

495-
defpupdate_content_result({:ok,%{update_content:result}}),do:{:ok,result}
496-
defpupdate_content_result({:error,:update_content,result,_steps}),do:{:error,result}
497-
defpupdate_content_result({:error,:update_tag,result,_steps}),do:{:error,result}
461+
defpexec_update_tags(_content,tags_ids)whenlength(tags_ids)==0,do:{:ok,:pass}
498462

499-
defpcontent_id(:post,id),do:%{post_id:id}
500-
defpcontent_id(:job,id),do:%{job_id:id}
501-
defpcontent_id(:repo,id),do:%{repo_id:id}
502-
defpcontent_id(:video,id),do:%{video_id:id}
463+
defpexec_update_tags(content,tags_ids)do
464+
with{:ok,content}<-ORM.find(content.__struct__,content.id,preload::tags)do
465+
tags=
466+
Enum.reduce(tags_ids,[],fnt,acc->
467+
{:ok,tag}=ORM.find(Tag,t.id)
468+
469+
casetag.title=="refined"do
470+
true->
471+
acc
472+
473+
false->
474+
acc++[tag]
475+
end
476+
end)
477+
478+
content
479+
|>Ecto.Changeset.change()
480+
|>Ecto.Changeset.put_assoc(:tags,tags)
481+
|>Repo.update()
482+
end
483+
end
503484

504485
defpnofify_admin_new_content(%{id:id}=result)do
505486
target=result.__struct__

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp