diff --git a/lib/sql_ecto/hr/country.ex b/lib/sql_ecto/hr/country.ex index 1f40e8c..45eae18 100644 --- a/lib/sql_ecto/hr/country.ex +++ b/lib/sql_ecto/hr/country.ex @@ -2,7 +2,7 @@ defmodule SqlEcto.Hr.Country do use Ecto.Schema import Ecto.Changeset - @primary_key {:country_id, :string, []} + @primary_key {:country_id, :string, autogenerate: false} schema "countries" do diff --git a/lib/sql_ecto/hr/department.ex b/lib/sql_ecto/hr/department.ex index 33442bb..dbdfcf1 100644 --- a/lib/sql_ecto/hr/department.ex +++ b/lib/sql_ecto/hr/department.ex @@ -2,7 +2,7 @@ defmodule SqlEcto.Hr.Department do use Ecto.Schema import Ecto.Changeset - @primary_key {:department_id, :integer, []} + @primary_key {:department_id, :integer, autogenerate: false} schema "departments" do @@ -11,6 +11,7 @@ defmodule SqlEcto.Hr.Department do end + @spec changeset(Ecto.Changeset.t(), any()) :: Ecto.Changeset.t() def changeset(departments, _params) do departments |> validate_required(:department_name) diff --git a/lib/sql_ecto/hr/dependent.ex b/lib/sql_ecto/hr/dependent.ex index bdab563..6dcf30c 100644 --- a/lib/sql_ecto/hr/dependent.ex +++ b/lib/sql_ecto/hr/dependent.ex @@ -2,7 +2,7 @@ defmodule SqlEcto.Hr.Dependent do use Ecto.Schema import Ecto.Changeset - @primary_key {:dependent_id, :integer, []} + @primary_key {:dependent_id, :integer, autogenerate: false} schema "dependents" do diff --git a/lib/sql_ecto/hr/employee.ex b/lib/sql_ecto/hr/employee.ex index 805d42d..7b72661 100644 --- a/lib/sql_ecto/hr/employee.ex +++ b/lib/sql_ecto/hr/employee.ex @@ -2,7 +2,7 @@ defmodule SqlEcto.Hr.Employee do use Ecto.Schema import Ecto.Changeset - @primary_key {:employee_id, :integer, []} + @primary_key {:employee_id, :integer, autogenerate: false} schema "employees" do @@ -18,6 +18,7 @@ defmodule SqlEcto.Hr.Employee do end + @spec changeset(Ecto.Changeset.t(), any()) :: Ecto.Changeset.t() def changeset(employees, _params) do employees |> validate_required(:last_name) diff --git a/lib/sql_ecto/hr/job.ex b/lib/sql_ecto/hr/job.ex index 6606fb4..2fd0644 100644 --- a/lib/sql_ecto/hr/job.ex +++ b/lib/sql_ecto/hr/job.ex @@ -2,7 +2,7 @@ defmodule SqlEcto.Hr.Job do use Ecto.Schema import Ecto.Changeset - @primary_key {:job_id, :integer, []} + @primary_key {:job_id, :integer, autogenerate: false} schema "jobs" do diff --git a/lib/sql_ecto/hr/location.ex b/lib/sql_ecto/hr/location.ex index d294d4e..5acc98a 100644 --- a/lib/sql_ecto/hr/location.ex +++ b/lib/sql_ecto/hr/location.ex @@ -2,7 +2,7 @@ defmodule SqlEcto.Hr.Location do use Ecto.Schema import Ecto.Changeset - @primary_key {:location_id, :integer, []} + @primary_key {:location_id, :integer, autogenerate: false} schema "locations" do diff --git a/lib/sql_ecto/hr/region.ex b/lib/sql_ecto/hr/region.ex index 3c5b0c5..8af2b97 100644 --- a/lib/sql_ecto/hr/region.ex +++ b/lib/sql_ecto/hr/region.ex @@ -2,7 +2,7 @@ defmodule SqlEcto.Hr.Region do use Ecto.Schema import Ecto.Changeset - @primary_key {:region_id, :integer, []} + @primary_key {:region_id, :integer, autogenerate: false} schema "regions" do diff --git a/priv/repo/migrations/20231101035925_create_regions.exs b/priv/repo/migrations/20231101035925_create_regions.exs new file mode 100644 index 0000000..b1d6ab6 --- /dev/null +++ b/priv/repo/migrations/20231101035925_create_regions.exs @@ -0,0 +1,10 @@ +defmodule SqlEcto.Repo.Migrations.CreateRegions do + use Ecto.Migration + + def change do + create table(:regions, primary_key: false) do + add :region_id, :serial, primary_key: true + add :region_name, :string, size: 25 + end + end +end diff --git a/priv/repo/migrations/20231102033546_create_countries.exs b/priv/repo/migrations/20231102033546_create_countries.exs new file mode 100644 index 0000000..61627d4 --- /dev/null +++ b/priv/repo/migrations/20231102033546_create_countries.exs @@ -0,0 +1,11 @@ +defmodule SqlEcto.Repo.Migrations.CreateCountries do + use Ecto.Migration + + def change do + create table(:countries, primary_key: false) do + add :country_id, :string, primary_key: true, size: 2 + add :country_name, :string, size: 40 + add :region_id, references("regions", column: :region_id, type: :serial, on_update: :update_all, on_delete: :delete_all), null: false + end + end +end diff --git a/priv/repo/migrations/20231102035048_create_locations.exs b/priv/repo/migrations/20231102035048_create_locations.exs new file mode 100644 index 0000000..c5070b7 --- /dev/null +++ b/priv/repo/migrations/20231102035048_create_locations.exs @@ -0,0 +1,16 @@ +defmodule SqlEcto.Repo.Migrations.CreateLocations do + use Ecto.Migration + + def change do + create table("locations", primary_key: false) do + add :location_id, :serial, primary_key: true + add :street_address, :string, size: 40 + add :postal_code, :string, size: 12 + add :city, :string, size: 30, null: false + add :state_province, :string, size: 25 + add :country_id, references("countries", type: :string, column: :country_id, on_update: :update_all, on_delete: :delete_all), null: false, size: 2 + + end + + end +end diff --git a/priv/repo/migrations/20231102040321_create_departments.exs b/priv/repo/migrations/20231102040321_create_departments.exs new file mode 100644 index 0000000..1ba1a33 --- /dev/null +++ b/priv/repo/migrations/20231102040321_create_departments.exs @@ -0,0 +1,11 @@ +defmodule SqlEcto.Repo.Migrations.CreateDepartments do + use Ecto.Migration + + def change do + create table("departments", primary_key: false) do + add :department_id, :serial, primary_key: true + add :department_name, :string, size: 30, null: false + add :location_id, references("locations", type: :serial, column: :location_id, on_update: :update_all, on_delete: :delete_all) + end + end +end diff --git a/priv/repo/migrations/20231102041246_create_jobs.exs b/priv/repo/migrations/20231102041246_create_jobs.exs new file mode 100644 index 0000000..a1c94cd --- /dev/null +++ b/priv/repo/migrations/20231102041246_create_jobs.exs @@ -0,0 +1,12 @@ +defmodule SqlEcto.Repo.Migrations.CreateJobs do + use Ecto.Migration + + def change do + create table(:jobs, primary_key: false) do + add :job_id, :serial, primary_key: true + add :job_title, :string, size: 35, null: false + add :min_salary, :decimal, precision: 8, scale: 2 + add :max_salary, :decimal, precision: 8, scale: 2 + end + end +end diff --git a/priv/repo/migrations/20231102042459_create_employees.exs b/priv/repo/migrations/20231102042459_create_employees.exs new file mode 100644 index 0000000..5757a80 --- /dev/null +++ b/priv/repo/migrations/20231102042459_create_employees.exs @@ -0,0 +1,18 @@ +defmodule SqlEcto.Repo.Migrations.CreateEmployees do + use Ecto.Migration + + def change do + create table("employees", primary_key: false) do + add :employee_id, :serial, primary_key: true + add :first_name, :string, size: 20 + add :last_name, :string, size: 25, null: false + add :email, :string, size: 100, null: false + add :phone_number, :string, size: 20 + add :hire_date, :date, null: false + add :salary, :decimal, precision: 8, scale: 2, null: false + add :job_id, references("jobs", type: :serial, column: :job_id, on_update: :update_all, on_delete: :delete_all) + add :department_id, references("departments", type: :serial, column: :department_id, on_update: :update_all, on_delete: :delete_all) + add :manager_id, references("employees", type: :serial, column: :employee_id, on_update: :update_all, on_delete: :delete_all) + end + end +end diff --git a/priv/repo/migrations/20231102044510_create_dependents.exs b/priv/repo/migrations/20231102044510_create_dependents.exs new file mode 100644 index 0000000..b501bda --- /dev/null +++ b/priv/repo/migrations/20231102044510_create_dependents.exs @@ -0,0 +1,13 @@ +defmodule SqlEcto.Repo.Migrations.CreateDependents do + use Ecto.Migration + + def change do + create table("dependents", primary_key: false) do + add :dependent_id, :serial, primary_key: true + add :first_name, :string, size: 50, null: false + add :last_name, :string, size: 50, null: false + add :relationship, :string, size: 25, null: false + add :employee_id, references("employees", type: :serial, column: :employee_id, on_update: :update_all, on_delete: :delete_all), null: false + end + end +end