Size: a a a

2019 October 01

Z

Zae in pro.elixir
добрый вечер, а как поменять дефолтное название примари кея в Ecto?

у меня есть такая таблица products
defmodule Soda.Repo.Migrations.CreateProducts do
 use Ecto.Migration

 def change do
   create table(:products, primary_key: false) do
     add :product_id, :serial, primary_key: true
     add :tags, {:array, :integer}
     add :name, :string, null: false
     add :is_deleted, :boolean, default: false, null: false
     add :price, :money_with_currency, null: false
     add :currency, :string, null: false, default: "RUB"
     add :in_stock, :integer, default: 0, null: false

     timestamps()
   end

 end
end


и
есть еше одна таблица которая ссылается на нее:
de
fmodule Soda.Repo.Migrations.CreateOrdersProducts do
 use Ecto.Migration

 def change do
   create table(:orders_products) do
     add :order_id, references(:orders, on_delete: :delete_all)
     add :product_parent_id, references(:products, on_delete: :delete_all, type: :serial)

     timestamps()
   end

   create index(:orders_products, [:order_id])
   create index(:orders_products, [:product_parent_id])
 end
end

Но при ecto.setup я ловлю ошибку there is no unique constraint matching given keys for referenced table "products"
источник

P

Pavel in pro.elixir
источник

P

Pavel in pro.elixir
column: :product_id должно помочь в references
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Zae
добрый вечер, а как поменять дефолтное название примари кея в Ecto?

у меня есть такая таблица products
defmodule Soda.Repo.Migrations.CreateProducts do
 use Ecto.Migration

 def change do
   create table(:products, primary_key: false) do
     add :product_id, :serial, primary_key: true
     add :tags, {:array, :integer}
     add :name, :string, null: false
     add :is_deleted, :boolean, default: false, null: false
     add :price, :money_with_currency, null: false
     add :currency, :string, null: false, default: "RUB"
     add :in_stock, :integer, default: 0, null: false

     timestamps()
   end

 end
end


и
есть еше одна таблица которая ссылается на нее:
de
fmodule Soda.Repo.Migrations.CreateOrdersProducts do
 use Ecto.Migration

 def change do
   create table(:orders_products) do
     add :order_id, references(:orders, on_delete: :delete_all)
     add :product_parent_id, references(:products, on_delete: :delete_all, type: :serial)

     timestamps()
   end

   create index(:orders_products, [:order_id])
   create index(:orders_products, [:product_parent_id])
 end
end

Но при ecto.setup я ловлю ошибку there is no unique constraint matching given keys for referenced table "products"
А зачем тебе менять значение primary_key в миграции?
источник

Z

Zae in pro.elixir
graphql резервирует название id под свои нужды, а мне нужно дернуть айди продукта который как в постгресе
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Чет не то
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Никаких проблем с graphql нету с id
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Есть только одна причина менять пк - это если у тебя есть дамп из старой базы
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Или таблица прибита гвоздями к чужому api
источник

Z

Zae in pro.elixir
у меня ничего не прибито, могу ресетнуть базу с новыми пк, просто чтоб работало
источник

Z

Zae in pro.elixir
Źmićer Rubinštejn
Никаких проблем с graphql нету с id
а как получить тогда айди который лежит в постгресе?
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Где получить?
источник

Z

Zae in pro.elixir
в query
источник

ŹR

Źmićer Rubinštejn in pro.elixir
ну пишешь

orders {
 id
}
источник

ŹR

Źmićer Rubinštejn in pro.elixir
или че там..
источник

Z

Zae in pro.elixir
и там приходит строка
источник

Z

Zae in pro.elixir
как base64
источник

Z

Zae in pro.elixir
а не постгресовое
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Ну значит ты не то делаешь в схеме graphql
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Какой-нибудь relay может взял
источник