Closed1

【javascript,graphQL】DB削除→物理削除・論理削除

hirohiro

何について書く?

  • DBの削除方法

内容

DBスキーマ定義

  • 物理削除編
type Test @model{
  id: ID!
  name: String!
}
- 論理削除編パターン①
```graphql
type Test @model{
  id: ID!
  name: String!
  deleteFlg: String!
}
  • 論理削除編パターン②
type Test @model{
  id: ID!
  name: String!
  deletedAt: AWSDateTime
}

削除手順

上記で定義されたDBを削除する際、物理削除と論理削除で使用する内容が異なる。

  • 物理削除の場合はmutations.tsdeleteTestを使用して削除を実行する。
    これで完全に削除され復元することは出来ない。
  • 論理削除の場合はmutations.tsupdateTestを使用して、パターン①のdeleteFlgまたはパターン②のdeletedAtを更新することで、削除したデータであることを定義する。データ自体は残っており、この定義に応じて表示を制御する必要がある。(queriesのフィルタリングにて)
  • 論理削除は上記の通り表示側も削除データを表示しないなどの工夫が必要であるが、顧客の要望でデータを復元できるため、誤ってデータを削除してしまい復元を希望されそうな場合は論理削除を選択したほうが良さそうだ。
  • 論理削除方法は2パターンあったが、deletedAtを使用したほうが削除日時がわかり、良さそう。これはPJの方針に合わせるのが吉。

参考サイト

このスクラップは2022/04/17にクローズされました