Skip to content

sasa-git/phoenix_api_sample

Repository files navigation

PhoenixApiSample

To start your Phoenix server:

  • Install dependencies with mix deps.get
  • Create and migrate your database with mix ecto.setup
  • Install Node.js dependencies with cd assets && npm install
  • Start Phoenix endpoint with mix phx.server

Now you can visit localhost:4000 from your browser.

Ready to run in production? Please check our deployment guides.

Learn more

memo

$ docker-compose run web mix ecto.gen.migration create_addresses
$ docker-compose run web mix ecto.migrate 

iexを使ってシードデータを作成

$ docker-compose run web iex -S mix
-> % docker-compose run web iex -S mix
Erlang/OTP 22 [erts-10.5.2] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe]

Compiling 1 file (.ex)
warning: unused alias Address
  lib/phoenix_api_sample_web/models/address.ex:4

Interactive Elixir (1.9.1) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> PhoenixApiSample.Repo.insert(%PhoenixApiSampleWeb.Address{name: "Tokyo"})
[debug] QUERY OK db=1.0ms decode=27.1ms queue=20.6ms idle=545.0ms
INSERT INTO `addresses` (`name`,`inserted_at`,`updated_at`) VALUES (?,?,?) ["Tokyo", ~N[2020-06-04 11:34:35], ~N[2020-06-04 11:34:35]]
{:ok,
 %PhoenixApiSampleWeb.Address{
   __meta__: #Ecto.Schema.Metadata<:loaded, "addresses">,
   id: 1,
   inserted_at: ~N[2020-06-04 11:34:35],
   name: "Tokyo",
   updated_at: ~N[2020-06-04 11:34:35]
 }}
iex(4)> PhoenixApiSampleWeb.Address |> PhoenixApiSample.Repo.get(1)
[debug] QUERY OK source="addresses" db=3.0ms idle=1483.2ms
SELECT a0.`id`, a0.`name`, a0.`inserted_at`, a0.`updated_at` FROM `addresses` AS a0 WHERE (a0.`id` = ?) [1]
%PhoenixApiSampleWeb.Address{
  __meta__: #Ecto.Schema.Metadata<:loaded, "addresses">,
  id: 1,
  inserted_at: ~N[2020-06-04 11:34:35],
  name: "Tokyo",
  updated_at: ~N[2020-06-04 11:34:35]
}

# nameから取得
iex(10)> PhoenixApiSampleWeb.Address |> PhoenixApiSample.Repo.get_by(name: "Tokyo")
[debug] QUERY OK source="addresses" db=0.7ms queue=1.1ms idle=1735.8ms
SELECT a0.`id`, a0.`name`, a0.`inserted_at`, a0.`updated_at` FROM `addresses` AS a0 WHERE (a0.`name` = ?) ["Tokyo"]
%PhoenixApiSampleWeb.Address{
  __meta__: #Ecto.Schema.Metadata<:loaded, "addresses">,
  id: 1,
  inserted_at: ~N[2020-06-04 11:34:35],
  name: "Tokyo",
  updated_at: ~N[2020-06-04 11:34:35]
}

# 全件取得
iex(1)> PhoenixApiSample.Repo.all(PhoenixApiSampleWeb.Address)   
[debug] QUERY OK source="addresses" db=0.4ms decode=28.0ms queue=25.1ms idle=1182.2ms
SELECT a0.`id`, a0.`name`, a0.`inserted_at`, a0.`updated_at` FROM `addresses` AS a0 []
[
  %PhoenixApiSampleWeb.Address{
    __meta__: #Ecto.Schema.Metadata<:loaded, "addresses">,
    id: 1,
    inserted_at: ~N[2020-06-04 11:34:35],
    name: "Tokyo",
    updated_at: ~N[2020-06-04 11:34:35]
  },
  %PhoenixApiSampleWeb.Address{
    __meta__: #Ecto.Schema.Metadata<:loaded, "addresses">,
    id: 2,
    inserted_at: ~N[2020-06-04 11:38:18],
    name: "Osaka",
    updated_at: ~N[2020-06-04 11:38:18]
  },
  %PhoenixApiSampleWeb.Address{
    __meta__: #Ecto.Schema.Metadata<:loaded, "addresses">,
    id: 3,
    inserted_at: ~N[2020-06-04 11:38:22],
    name: "Nara",
    updated_at: ~N[2020-06-04 11:38:22]
  }
]

多分、xxWebはそのアプリ特有のもの、xxだけだとPhoenix自体の機能を使っている感じ?

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published