CHANGELOG.md

# 変更履歴

- UPDATE
    - 下位互換がある変更
- ADD
    - 下位互換がある追加
- CHANGE
    - 下位互換のない変更
- FIX
    - バグ修正

## develop

## 2.1.1 (2024-08-23)

- [UPDATE] Elixir 1.17 に対応
- [UPDATE] 依存ライブラリを更新
  - ecto_sql: 3.11.1 → 3.11.3
  - ex_doc: 0.31.0 → 0.34.2

## 2.1.0 (2024-01-27)

- [ADD] Ecto.Schema の `:virtual` オプションに対応

## 2.0.6 (2024-01-26)

- [FIX] Elixir 1.16 でマイナスレンジの警告が出ていたのを修正 (fix #24)

## 2.0.5 (2023-12-23)

- [UPDATE] Elixir 1.16 に対応
- [UPDATE] 依存ライブラリを更新
  - ecto_sql: 3.10.2 → 3.11.1
  - memoize: 1.4.1 → 1.4.2
  - ex_doc: 0.29.4 → 0.31.0
  - myxql: 0.6.3 → 0.6.4
- [UPDATE] Elixir 1.14 以上の場合、`Yacto.Migration.Structure` を inspect する際に Map データをソートして文字列に変換する
- [CHANGE] サポートする Elixir のバージョンを 1.9 から 1.11 に上げる

## 2.0.4 (2023-06-22)

- [UPDATE] Elixir 1.15 に対応
- [UPDATE] 依存ライブラリを更新
  - ecto_sql: 3.8.3 → 3.10.2
  - memoize: 1.4.1 → 1.4.2
  - ex_doc: 0.28.5 → 0.29.4
  - myxql: 0.6.2 → 0.6.3

## 2.0.3 (2022-09-04)

- [UPDATE] Elixir 1.14 に対応
- [UPDATE] 依存ライブラリを更新
  - ecto_sql: 3.7.2 → 3.8.3
  - myxql: 0.6.1 → 0.6.2
  - ex_doc: 0.28.2 → 0.28.5
  - memoize: 1.4.0 → 1.4.1

## 2.0.2 (2022-03-15)

- [UPDATE] 依存ライブラリを更新
  - ecto_sql: 3.6.0 → 3.7.2
  - myxql: 0.5.1 → 0.6.1
  - ex_doc: 0.25.0 → 0.28.2
  - memoize: 1.3.3 → 1.4.0
  - power_assert: 0.2.1 → 0.3.0

## 2.0.1 (2021-04-04)

- [UPDATE] 依存ライブラリを更新
  - ecto_sql: 3.5.0 → 3.6.0
  - myxql: 0.4.3 → 0.5.1
  - ex_doc: 0.22.6 → 0.24.1
  - memoize: 1.3.1 → 1.3.3
  - power_assert: 0.2.0 → 0.2.1

## 2.0.0 (2020-10-07)

### 下位互換のない変更

- [CHANGE] マイグレーションファイルをモデル毎に生成する
  - 今まで生成した全てのマイグレーションファイルは利用できなくなります。
  - 新しく生成したマイグレーションファイルで `mix yacto.migrate --fake` を実行して新しくマイグレーションスキーマを設定する必要があります。
- [CHANGE] `Yacto.Schema` で定義していたデフォルトの `@primary_key` を削除した
- [CHANGE] `@auto_source` から生成するテーブル名のルールを変更した
  - 例えば `App.Model.FooBar` の場合、1.x では `app_model_foo_bar` になっていたが、2.x では `app_model_foobar` となる
- [CHANGE] `Yacto.DB` の引数にキーワードリストを取れるようにして、データベースの設定を動的に渡せるようにした
  - `Yacto.DB.repo(:player, "key")` と書いていたのを `Yacto.DB.repo(:player, shard_key: "key")` と書く必要がある
- [CHANGE] `:table_name_converter` は不完全な機能だったので削除した
- [CHANGE] `Yacto.Schema.Single` と `Yacto.Schema.Shard` を削除した
  - データベースの設定を動的に渡せるようになり、`Yacto.Schema.Single` と `Yacto.Schema.Shard` のチェック機構が使えなくなるため。
- [CHANGE] `mix yacto.migrate` で `--repo` を指定しなかった場合に利用するリポジトリ一覧を `:ecto_repos` から取得するようにした

### 下位互換がある追加

- [ADD] スキーマの定義時にマイグレーションファイルを生成するかどうかを選択できるようにした(Thanks @mori5321 !)
- [ADD] `field/3` のマイグレーション用メタ情報に `:precision` と `:scale` を追加
- [ADD] モデルを削除した時に drop table する機能を実装
- [ADD] マイグレーションファイルを検証する機能を実装
  - 複数のブランチからマージした場合に矛盾が起きる可能性があったので、それを検出してエラーにする
- [ADD] `Yacto.transaction/3` に、XA を行わない `:noxa` オプションを追加した

### 下位互換がある変更

- [UPDATE] Ecto 3.5 への対応
  - MySQL Adapter をやめて MyXQL Adapter を使うようにした
  - 新しいバージョンの Ecto.Migration.Runner に追従
- [UPDATE] Elixir 1.11 への対応
- [UPDATE] 全体的に日本語でやることにした

### バグ修正

- [FIX] インデックスの付いたフィールドを削除するとマイグレーションに失敗する問題を修正した (Thanks @h1u2i3 !)
- [FIX] DB の新規作成時に、カラムの並びが定義順になるようにした
- [FIX] `:index_name_max_length` 設定がある場合、長いインデックス名を削るようにした
- [FIX] `get_for_update/3` を修正した
- [FIX] テスト周りのリファクタリング

## 1.2.6

- Implement table name converter

## 1.2.5

- Use asdf
- Fix migration error when using custom Ecto.Type with default value

## 1.2.4

- Customize a hashing function for sharding databases

## 1.2.3

- Fix a migration error is occured when using `:source` in field

## 1.2.2

- `timestamps/1` can be had `:meta`

## 1.2.1

- Fix an issue where using `autogenerate: {m, f, a}` in `@primary_key` definition causes an error
- Implement `@primary_key_meta` that specify a primary key meta info for migration

## 1.2.0

- Implement `Yacto.XA.rollback/2`

## 1.1.3

- Update dependencies

## 1.1.2

- In `Yacto.Schema.field/3`, if opts[:default] is specified, set the value to meta[:default]

## 1.1.1

- Rename `get_or_new/4` to `get_by_or_new/4` and `get_or_insert_for_update/4` to `get_by_or_insert_for_update/4`

## 1.1.0

- Add `Yacto.Schema.Single` and `Yacto.Schema.Shard` modules.
    - These define `repo/{0-1}` after `use Yacto.Schema`.
- Add `Yacto.Repo.Helper` to provide convenient functions.

## 1.0.7

- Apply elixir formatter
- Fix warnings
- Update dependencies

## 1.0.6

- [Bug] Fix a migration type name includes with spaces.

## 1.0.5

- Shorten index name for too long name error.
- Use specified migration type if :type defined in meta
- Remove illegal character in filename for Windows