🧺
TypeScriptのリポジトリレイヤで使用している雛形
APIからfetchしてデータを取得したりする際に、リポジトリレイヤとして使っている雛形をこの記事に残します。
ちなみに、この記事ではFirebaseのFireStoreを使用する前提で作成していますが、メソッド内の処理は適宜変更できるような構成になっています。
あと、trycatch
はこのリポジトリレイヤを呼び出すところで使うといいかもです。
repositories/example.ts
import firebase, { db } from 'common/firebase'
const Example = db.collection('examples')
type TExample = {
id: number
created_at: firebase.firestore.Timestamp
}
/**
* all get
*/
export const get = async (): Promise<TExample[]> => {
const res: TExample[] = []
const datas = await Example.get()
datas.docs.forEach((doc) => {
const example: TExample = doc as TExample
res.push(example)
})
return res
}
/**
* create
*/
export const store = async (example: TExample): Promise<void> => {
await Example.doc(example.id).set(example)
}
/**
* update
*/
export const update = async (example: TExample): Promise<void> => {
example.updated_at = firebase.firestore.Timestamp.now()
await Example.doc(example.id).update(example)
}
/**
* delete
*/
export const remove = async (example: TExample): Promise<void> => {
await Example.doc(example.id).delete()
}
FirebaseV9系でないのは悪しからず😓
Discussion