Phoenix API의 DB Accessor/Validator 코드 해석
fukuoka.ex 대표 piacere
방문해 주셔서 감사합니다
이번에는, 지난번 의 계속으로, Phoenix에서 자동 생성한 API의, DB 액세서/버리데이터에 대해서, 코드 해석합니다
통지:Elixir MeetUp을 6월 말에 개최합니다
「fukuoka.ex#11:DB/데이터 사이언스에 커넥트 하는 Elixir」 을 6/22(금) 19시에 개최합니다
fukuoka.ex의 발족으로부터, 딱 1주년이 되는, 기념적인 이벤트이기도 하기 때문에, 이 칼럼을 마음에 받은 분과, 꼭 함께 고조되고 싶습니다
후쿠오카 근처에 거주하는 분이라면 놀러와주세요.
대인기로, 한 번은 만석이 되었습니다만, 늘어났으므로, 아래와 같이 URL로부터 참가해 주세요
htps // // 후쿠오카에 x. 곤파 s. 코 m / 에ょ t / 87241
특별 게스트는 Erlang/Elixir의 양면에서 세계적으로 유명한 '역무 켄지씨'와 기타큐슈 이즈카시에서 'e-ZUKA Tech Night'를 6년간 주최하는 하우 인터내셔널의 '다니구치 코헤이 씨' 두 사람과 정말 화려한 이벤트입니다.
저는 이번 시리즈를 근거로 한 "1집에 1대, 개인 데이터 분석 AI를 전원이 가지는 2020년을 만든다"라는 제목으로, Elixir에 의한 브라우저 UI상에서 빨리 데이터 분석 플랫폼을 피로 할 LT를 제공합니다.
DB 액세서 및 검증자
API의 리퀘스트/응답의 해석/개조는, 전회까지의 내용만으로 충분해 갈 수 있습니다만, 드디어, DB액세서와 밸리데이터에 대해서도 파악해 두는 것이, Phoenix의 이해는 진행되므로, 드디어 해설해 일어나
DB 액세서는 아래의 모듈에 집약되어 있습니다.
list_sample()은 컨트롤러의 index()에서 호출되고 create_sample()은 컨트롤러의 create()에서 호출됩니다.
이 모듈 내용은 API만이 아니라 "mix phx.gen.html~"로 자동 생성하는 Web일 때도 같은 내용으로 생성됩니다.
lib/sample_analytics/api/api.exdefmodule SampleAnalytics.Api do
…
def list_sample do
Repo.all(Sample)
end
…
def create_sample(attrs \\ %{}) do
%Sample{}
|> Sample.changeset(attrs)
|> Repo.insert()
end
…
유효성 검사기는 다음 모듈의 changeset()로 생성됩니다.
changeset()는 위의 DB 접근자 모듈 create_sample() 및 update_sample()에서 DB 데이터 업데이트(≒Repo.insert() 또는 Repo.update()) 바로 전에 호출됩니다.
이 모듈 내용도, 「mix phx.gen.html~」로 자동 생성하는 Web의 때와 같습니다만, DB 액세서로 DB 데이터 갱신 직전에 changeset()가 불리는 점도 같습니다
lib/sample_analytics/api/sample.exdefmodule SampleAnalytics.Api.Sample do
use Ecto.Schema
import Ecto.Changeset
schema "sample" do
field :body, :string
field :title, :string
timestamps()
end
@doc false
def changeset(sample, attrs) do
sample
|> cast(attrs, [:title, :body])
|> validate_required([:title, :body])
end
end
또한, changeset() 내에서 호출할 수 있는 밸리데이션 처리에 대해서는, "elixir on phoenix changeset의 Validates" 를 보시면 참고가 된다고 생각합니다
끝
이번에는 Phoenix API의 DB Accessor/Validator 코드 흐름을 분석했습니다.
DB 액세서를 만지는 기회는, 거기까지는 없다고 생각합니다만, 한편으로 밸리데이터는, 비교적 커스터마이즈 할 기회가 있으므로, 캐치 업 해 두면, Phoenix API 개발이 부드러워질까 생각합니다
p.s.「좋아요」 잘 부탁드립니다
원한다면 페이지 왼쪽 상단의 또는 을 클릭하십시오.
Reference
이 문제에 관하여(Phoenix API의 DB Accessor/Validator 코드 해석), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/piacerex/items/42dc20a5c33f29dfca9f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
defmodule SampleAnalytics.Api do
…
def list_sample do
Repo.all(Sample)
end
…
def create_sample(attrs \\ %{}) do
%Sample{}
|> Sample.changeset(attrs)
|> Repo.insert()
end
…
defmodule SampleAnalytics.Api.Sample do
use Ecto.Schema
import Ecto.Changeset
schema "sample" do
field :body, :string
field :title, :string
timestamps()
end
@doc false
def changeset(sample, attrs) do
sample
|> cast(attrs, [:title, :body])
|> validate_required([:title, :body])
end
end
이번에는 Phoenix API의 DB Accessor/Validator 코드 흐름을 분석했습니다.
DB 액세서를 만지는 기회는, 거기까지는 없다고 생각합니다만, 한편으로 밸리데이터는, 비교적 커스터마이즈 할 기회가 있으므로, 캐치 업 해 두면, Phoenix API 개발이 부드러워질까 생각합니다
p.s.「좋아요」 잘 부탁드립니다
원한다면 페이지 왼쪽 상단의 또는 을 클릭하십시오.
Reference
이 문제에 관하여(Phoenix API의 DB Accessor/Validator 코드 해석), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/piacerex/items/42dc20a5c33f29dfca9f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Phoenix API의 DB Accessor/Validator 코드 해석), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/piacerex/items/42dc20a5c33f29dfca9f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)