whalepod / milelane

1 stars 0 forks source link

端末発行エンドポイントを作る #12

Closed MasashiFujiike closed 4 years ago

MasashiFujiike commented 4 years ago

概要

端末テーブルを用意する。 このテーブルはid(内部的なprimary key)とdevice_id(端末識別用)を持つ。 この場合の端末ごとの扱いは以下のような見込み

端末 挙動 備考
Webブラウザ ブラウザのJS上でuuidを生成してPOSTする。この値はsession storageなど永続化層に書き込む セッションの保持期限が切れると同一性を保てなくなる
iPhoneアプリ IDFV を送信する アプリをアンインストールすると同一性を保てるか怪しい
Android ANDROID_ID を送信する アプリをアンインストールすると同一性を保てるか怪しい

ざっくりした要件ぽいもの

MasashiFujiike commented 4 years ago

ANDROID_IDの仕様はこの辺 https://developer.android.com/reference/android/provider/Settings.Secure#ANDROID_ID よくわかんないけどuuidではなさそう

MasashiFujiike commented 4 years ago

IDFVはUUID https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor

MasashiFujiike commented 4 years ago

[メモ]

18 で対応ずみでcloseする。

仕様策定時のメモを記録しておく

アカウントどうする問題

- タスクは実態としては必ずユーザーに紐づく
- ユーザー登録なんかしたくない
- 同一端末から複数のアカウント切り替えとか必定

- 単一の端末で使っている間は、端末に紐づく
- 複数端末でのauthを開始したタイミングでユーザーに紐づく
    - ユーザーが生成されるのもこのタイミング
    - このタイミングでタスクは「端末のものではなくなる」
- タスクのマージは要検討

- タスクが(データ的に)複数端末のものになることはあるか?
    NO。あくまで作成端末は一つ
    task_idにユニーク制約がついたdevice_tasksがあればいい
- タスクが(データ的に)複数ユーザーのものになることはあるか?
    NO。あくまで作成ユーザーは一人。ただしこれは必ずあるわけではない

- 複数人で共有するタスク
    → 必ず「作成者」がいる
    → 必ず「lane」に紐づく

lanizeの概念はtaskのroleの一つにしておかないほうがいいかもしれない。
public laneにしたタイミングでデータができるとかそういう感じかなあ

端末生成                        
∟ タスクは端末に中間テーブルで紐づく
↓
ユーザー生成 or auth
∟ タスクはユーザーに中間テーブルで紐付き、端末紐づきはdeprecateされる