Skip to content
This repository was archived by the owner on Nov 8, 2022. It is now read-only.

Commit 386e0f5

Browse files
committed
refactor: add macro for social-fields
1 parent 1c4a56b commit 386e0f5

File tree

5 files changed

+46
-27
lines changed

5 files changed

+46
-27
lines changed

lib/mastani_server/accounts/user.ex

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ defmodule MastaniServer.Accounts.User do
33
alias __MODULE__
44

55
use Ecto.Schema
6+
7+
import MastaniServerWeb.Schema.Utils.Helper
68
import Ecto.Changeset
79

810
alias MastaniServer.Accounts.{
@@ -21,7 +23,7 @@ defmodule MastaniServer.Accounts.User do
2123
alias MastaniServer.CMS
2224

2325
@required_fields ~w(nickname avatar)a
24-
@optional_fields ~w(nickname bio sex location douban dribble email facebook github huaban qq weibo weichat twitter zhihu)a
26+
@optional_fields ~w(nickname bio sex location douban dribble email facebook pinterest pinterest github huaban qq weibo weichat twitter zhihu)a
2527

2628
@type t :: %User{}
2729
schema "users" do
@@ -31,25 +33,13 @@ defmodule MastaniServer.Accounts.User do
3133
field(:bio, :string)
3234
field(:email, :string)
3335
field(:location, :string)
36+
field(:from_github, :boolean)
37+
38+
sscial_fields()
3439

35-
# TODO
3640
embeds_many(:education_backgrounds, EducationBackground)
3741
embeds_many(:work_backgrounds, WorkBackground)
3842

39-
# social info
40-
field(:github, :string)
41-
field(:twitter, :string)
42-
field(:facebook, :string)
43-
field(:zhihu, :string)
44-
field(:dribble, :string)
45-
field(:huaban, :string)
46-
field(:douban, :string)
47-
48-
field(:qq, :string)
49-
field(:weibo, :string)
50-
field(:weichat, :string)
51-
52-
field(:from_github, :boolean)
5343
has_one(:achievement, Achievement)
5444
has_one(:github_profile, GithubUser)
5545
has_one(:cms_passport, CMS.Passport)

lib/mastani_server_web/schema/account/account_misc.ex

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
defmodule MastaniServerWeb.Schema.Account.Misc do
2-
use Absinthe.Schema.Notation
2+
@moduledoc false
33

4+
use Absinthe.Schema.Notation
45
import MastaniServerWeb.Schema.Utils.Helper
56
# import Helper.Utils, only: [get_config: 2]
67
# @page_size get_config(:general, :page_size)
@@ -47,9 +48,9 @@ defmodule MastaniServerWeb.Schema.Account.Misc do
4748
field(:sex, :string)
4849
field(:location, :string)
4950
field(:email, :string)
50-
field(:qq, :string)
51-
field(:weibo, :string)
52-
field(:weichat, :string)
51+
# social
52+
sscial_fields()
53+
# backgrounds
5354
field(:education_backgrounds, list_of(:education_background))
5455
field(:work_backgrounds, list_of(:work_background))
5556
end

lib/mastani_server_web/schema/account/account_types.ex

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,9 @@ defmodule MastaniServerWeb.Schema.Account.Types do
3232
field(:sex, :string)
3333
field(:email, :string)
3434
field(:location, :string)
35-
field(:education, :string)
36-
field(:company, :string)
37-
field(:qq, :string)
38-
field(:weibo, :string)
39-
field(:weichat, :string)
35+
36+
sscial_fields()
37+
4038
field(:inserted_at, :datetime)
4139
field(:updated_at, :datetime)
4240
field(:from_github, :boolean)
Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,42 @@
11
defmodule MastaniServerWeb.Schema.Utils.Helper do
2+
@moduledoc """
3+
common fields
4+
"""
25
import Helper.Utils, only: [get_config: 2]
36
@page_size get_config(:general, :page_size)
47
# @default_inner_page_size 5
58

69
# see: https://github.com/absinthe-graphql/absinthe/issues/363
7-
defmacro pagination_args() do
10+
defmacro pagination_args do
811
quote do
912
field(:page, :integer, default_value: 1)
1013
field(:size, :integer, default_value: unquote(@page_size))
1114
end
1215
end
1316

14-
defmacro pagination_fields() do
17+
defmacro pagination_fields do
1518
quote do
1619
field(:total_count, :integer)
1720
field(:page_size, :integer)
1821
field(:total_pages, :integer)
1922
field(:page_number, :integer)
2023
end
2124
end
25+
26+
defmacro sscial_fields do
27+
quote do
28+
field(:qq, :string)
29+
field(:weibo, :string)
30+
field(:weichat, :string)
31+
field(:github, :string)
32+
field(:zhihu, :string)
33+
field(:douban, :string)
34+
field(:twitter, :string)
35+
field(:facebook, :string)
36+
field(:dribble, :string)
37+
field(:instagram, :string)
38+
field(:pinterest, :string)
39+
field(:huaban, :string)
40+
end
41+
end
2242
end
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
defmodule MastaniServer.Repo.Migrations.AddMoreSocialToUsers do
2+
use Ecto.Migration
3+
4+
def change do
5+
alter table(:users) do
6+
add(:pinterest, :string)
7+
add(:instagram, :string)
8+
end
9+
end
10+
end

0 commit comments

Comments
 (0)