Skip to content

Commit c7834bb

Browse files
authored
feat: add pubic dataset contexts and routes (#665)
1 parent cbef213 commit c7834bb

14 files changed

+603
-16
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,213 @@
1+
defmodule UliCommunity.PublicDataset do
2+
@moduledoc """
3+
The PublicDataset context.
4+
"""
5+
6+
import Ecto.Query, warn: false
7+
alias UliCommunity.Repo
8+
9+
alias UliCommunity.PublicDataset.PluginSlurMetadata
10+
11+
@doc """
12+
Returns the list of plugin_slur_metadata.
13+
14+
## Examples
15+
16+
iex> list_plugin_slur_metadata()
17+
[%PluginSlurMetadata{}, ...]
18+
19+
"""
20+
def list_plugin_slur_metadata do
21+
Repo.all(PluginSlurMetadata)
22+
end
23+
24+
@doc """
25+
Gets a single plugin_slur_metadata.
26+
27+
Raises `Ecto.NoResultsError` if the Plugin slur metadata does not exist.
28+
29+
## Examples
30+
31+
iex> get_plugin_slur_metadata!(123)
32+
%PluginSlurMetadata{}
33+
34+
iex> get_plugin_slur_metadata!(456)
35+
** (Ecto.NoResultsError)
36+
37+
"""
38+
def get_plugin_slur_metadata!(id), do: Repo.get!(PluginSlurMetadata, id)
39+
40+
@doc """
41+
Creates a plugin_slur_metadata.
42+
43+
## Examples
44+
45+
iex> create_plugin_slur_metadata(%{field: value})
46+
{:ok, %PluginSlurMetadata{}}
47+
48+
iex> create_plugin_slur_metadata(%{field: bad_value})
49+
{:error, %Ecto.Changeset{}}
50+
51+
"""
52+
def create_plugin_slur_metadata(attrs \\ %{}) do
53+
%PluginSlurMetadata{}
54+
|> PluginSlurMetadata.changeset(attrs)
55+
|> Repo.insert()
56+
end
57+
58+
@doc """
59+
Updates a plugin_slur_metadata.
60+
61+
## Examples
62+
63+
iex> update_plugin_slur_metadata(plugin_slur_metadata, %{field: new_value})
64+
{:ok, %PluginSlurMetadata{}}
65+
66+
iex> update_plugin_slur_metadata(plugin_slur_metadata, %{field: bad_value})
67+
{:error, %Ecto.Changeset{}}
68+
69+
"""
70+
def update_plugin_slur_metadata(%PluginSlurMetadata{} = plugin_slur_metadata, attrs) do
71+
plugin_slur_metadata
72+
|> PluginSlurMetadata.changeset(attrs)
73+
|> Repo.update()
74+
end
75+
76+
@doc """
77+
Deletes a plugin_slur_metadata.
78+
79+
## Examples
80+
81+
iex> delete_plugin_slur_metadata(plugin_slur_metadata)
82+
{:ok, %PluginSlurMetadata{}}
83+
84+
iex> delete_plugin_slur_metadata(plugin_slur_metadata)
85+
{:error, %Ecto.Changeset{}}
86+
87+
"""
88+
def delete_plugin_slur_metadata(%PluginSlurMetadata{} = plugin_slur_metadata) do
89+
Repo.delete(plugin_slur_metadata)
90+
end
91+
92+
@doc """
93+
Returns an `%Ecto.Changeset{}` for tracking plugin_slur_metadata changes.
94+
95+
## Examples
96+
97+
iex> change_plugin_slur_metadata(plugin_slur_metadata)
98+
%Ecto.Changeset{data: %PluginSlurMetadata{}}
99+
100+
"""
101+
def change_plugin_slur_metadata(%PluginSlurMetadata{} = plugin_slur_metadata, attrs \\ %{}) do
102+
PluginSlurMetadata.changeset(plugin_slur_metadata, attrs)
103+
end
104+
105+
def get_plugin_slur_metadata_by_batch(batch) do
106+
slurs = Repo.all(from s in PluginSlurMetadata, where: s.batch == ^batch)
107+
108+
{:ok, slurs}
109+
end
110+
111+
alias UliCommunity.PublicDataset.PluginSlur
112+
113+
@doc """
114+
Returns the list of plugin_slurs.
115+
116+
## Examples
117+
118+
iex> list_plugin_slurs()
119+
[%PluginSlur{}, ...]
120+
121+
"""
122+
def list_plugin_slurs do
123+
Repo.all(PluginSlur)
124+
end
125+
126+
@doc """
127+
Gets a single plugin_slur.
128+
129+
Raises `Ecto.NoResultsError` if the Plugin slur does not exist.
130+
131+
## Examples
132+
133+
iex> get_plugin_slur!(123)
134+
%PluginSlur{}
135+
136+
iex> get_plugin_slur!(456)
137+
** (Ecto.NoResultsError)
138+
139+
"""
140+
def get_plugin_slur!(id), do: Repo.get!(PluginSlur, id)
141+
142+
@doc """
143+
Creates a plugin_slur.
144+
145+
## Examples
146+
147+
iex> create_plugin_slur(%{field: value})
148+
{:ok, %PluginSlur{}}
149+
150+
iex> create_plugin_slur(%{field: bad_value})
151+
{:error, %Ecto.Changeset{}}
152+
153+
"""
154+
def create_plugin_slur(attrs \\ %{}) do
155+
%PluginSlur{}
156+
|> PluginSlur.changeset(attrs)
157+
|> Repo.insert()
158+
end
159+
160+
@doc """
161+
Updates a plugin_slur.
162+
163+
## Examples
164+
165+
iex> update_plugin_slur(plugin_slur, %{field: new_value})
166+
{:ok, %PluginSlur{}}
167+
168+
iex> update_plugin_slur(plugin_slur, %{field: bad_value})
169+
{:error, %Ecto.Changeset{}}
170+
171+
"""
172+
def update_plugin_slur(%PluginSlur{} = plugin_slur, attrs) do
173+
plugin_slur
174+
|> PluginSlur.changeset(attrs)
175+
|> Repo.update()
176+
end
177+
178+
@doc """
179+
Deletes a plugin_slur.
180+
181+
## Examples
182+
183+
iex> delete_plugin_slur(plugin_slur)
184+
{:ok, %PluginSlur{}}
185+
186+
iex> delete_plugin_slur(plugin_slur)
187+
{:error, %Ecto.Changeset{}}
188+
189+
"""
190+
def delete_plugin_slur(%PluginSlur{} = plugin_slur) do
191+
Repo.delete(plugin_slur)
192+
end
193+
194+
@doc """
195+
Returns an `%Ecto.Changeset{}` for tracking plugin_slur changes.
196+
197+
## Examples
198+
199+
iex> change_plugin_slur(plugin_slur)
200+
%Ecto.Changeset{data: %PluginSlur{}}
201+
202+
"""
203+
def change_plugin_slur(%PluginSlur{} = plugin_slur, attrs \\ %{}) do
204+
PluginSlur.changeset(plugin_slur, attrs)
205+
end
206+
207+
def get_plugin_slurs_by_batch(batch) do
208+
slurs = Repo.all(from s in PluginSlur, where: s.batch == ^batch)
209+
210+
{:ok, slurs}
211+
end
212+
213+
end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
defmodule UliCommunity.PublicDataset.PluginSlur do
2+
use Ecto.Schema
3+
import Ecto.Changeset
4+
5+
@derive {Jason.Encoder,
6+
only: [
7+
:id,
8+
:label,
9+
:batch,
10+
:language,
11+
:inserted_at,
12+
:updated_at
13+
]}
14+
15+
16+
schema "plugin_slurs" do
17+
field :label, :string
18+
field :language, :string
19+
field :batch, :integer
20+
21+
timestamps(type: :utc_datetime)
22+
end
23+
24+
@doc false
25+
def changeset(plugin_slur, attrs) do
26+
plugin_slur
27+
|> cast(attrs, [:label, :language, :batch])
28+
|> validate_required([:label, :language, :batch])
29+
end
30+
end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
defmodule UliCommunity.PublicDataset.PluginSlurMetadata do
2+
use Ecto.Schema
3+
import Ecto.Changeset
4+
5+
@derive {Jason.Encoder,
6+
only: [
7+
:id,
8+
:label,
9+
:level_of_severity,
10+
:casual,
11+
:appropriated,
12+
:appropriation_context,
13+
:meaning,
14+
:batch,
15+
:language,
16+
:categories,
17+
:inserted_at,
18+
:updated_at
19+
]}
20+
21+
schema "plugin_slur_metadata" do
22+
field :label, :string
23+
field :language, :string
24+
field :level_of_severity, Ecto.Enum, values: [:low, :medium, :high]
25+
field :casual, :boolean
26+
field :appropriated, :boolean, default: false
27+
field :appropriation_context, :boolean, default: false
28+
field :meaning, :string
29+
field :batch, :integer
30+
31+
field :categories, {:array, Ecto.Enum},
32+
values: [
33+
:gendered,
34+
:sexualized,
35+
:religion,
36+
:ethnicity,
37+
:political_affiliation,
38+
:caste,
39+
:class,
40+
:body_shaming,
41+
:ableist,
42+
:sexual_identity,
43+
:other
44+
]
45+
46+
timestamps(type: :utc_datetime)
47+
end
48+
49+
@doc false
50+
def changeset(plugin_slur_metadata, attrs) do
51+
plugin_slur_metadata
52+
|> cast(attrs, [
53+
:label,
54+
:level_of_severity,
55+
:casual,
56+
:appropriated,
57+
:appropriation_context,
58+
:meaning,
59+
:language,
60+
:batch,
61+
:categories
62+
])
63+
|> validate_required([
64+
:label,
65+
:level_of_severity,
66+
:casual,
67+
:appropriated,
68+
:appropriation_context,
69+
:meaning,
70+
:language,
71+
:batch,
72+
:categories
73+
])
74+
end
75+
end

uli-community/lib/uli_community_web/components/layouts/app.html.heex

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<header class="px-4 sm:px-6 lg:px-8">
1+
<%!-- <header class="px-4 sm:px-6 lg:px-8">
22
<div class="flex items-center justify-between border-b border-zinc-100 py-3 text-sm">
33
<div class="flex items-center gap-4">
44
<a href="/">
@@ -23,9 +23,10 @@
2323
</a>
2424
</div>
2525
</div>
26-
</header>
26+
</header> --%>
2727
<main class="px-4 py-20 sm:px-6 lg:px-8">
28-
<div class="mx-auto max-w-2xl">
28+
<%!-- <div class="mx-auto max-w-2xl"> --%>
29+
<div class="mx-auto">
2930
<.flash_group flash={@flash} />
3031
<%= @inner_content %>
3132
</div>

uli-community/lib/uli_community_web/components/layouts/root.html.heex

+5
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,11 @@
1313
</head>
1414
<body class="bg-white">
1515
<ul class="relative z-10 flex items-center gap-4 px-4 sm:px-6 lg:px-8 justify-end">
16+
<li class="mr-auto">
17+
<a href="/" >
18+
<img src={~p"/images/Uli_Logo.png"} width="56" />
19+
</a>
20+
</li>
1621
<%= if @current_user do %>
1722
<li class="text-[0.8125rem] leading-6 text-zinc-900">
1823
<%= @current_user.email %>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
defmodule UliCommunityWeb.PublicDatasetController do
2+
alias UliCommunity.PublicDataset
3+
use UliCommunityWeb, :controller
4+
5+
def get_slurs_by_batch(conn, %{"batch" => batch}) do
6+
{:ok, slurs} = PublicDataset.get_plugin_slurs_by_batch(batch)
7+
8+
json(conn, %{message: "success", slurs: slurs})
9+
end
10+
11+
12+
def get_slursmetadata_by_batch(conn, %{"batch" => batch}) do
13+
{:ok, slurs_metadata} = PublicDataset.get_plugin_slur_metadata_by_batch(batch)
14+
15+
json(conn, %{message: "success", slurs_metadata: slurs_metadata})
16+
end
17+
end

uli-community/lib/uli_community_web/controllers/slurs_controller.ex

-7
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,6 @@ defmodule UliCommunityWeb.SlursController do
55

66
def options(conn, _params) do
77
conn
8-
# Or specify a domain like "http://localhost:3000"
9-
|> put_resp_header("access-control-allow-origin", "*")
10-
# Allow the POST method
11-
|> put_resp_header("access-control-allow-methods", "POST")
12-
# Allow the Content-Type header
13-
|> put_resp_header("access-control-allow-headers", "Content-Type")
14-
# Respond with a 200 OK and no body content
158
|> send_resp(200, "")
169
end
1710

0 commit comments

Comments
 (0)