ORM for TypeScript and Google Cloud Firestore.
Firetype requires TypeScript to work as intended.
npm install -D typescript
Install the firetype
and @google-cloud/firestore
packages.
npm install firetype @google-cloud/firestore
Create an interface that describes your document and extends the Entity
type.
import { Entity } from 'firetype'
interface User extends Entity {
firstName: string
lastName: string
}
The Entity
type adds an id
property with type string
. This is used as the
Document ID in Cloud Firestore and inserted into the document as id
.
Use the base repository with built-in methods.
import { Repository } from 'firetype'
import { User } from './entity/User'
const userRepository = new Repository<User>('root_collection_name')
await userRepository.find('123')
await userRepository.createOrUpdate({
id: uuidv4(),
firstName: 'Jack',
lastName: 'Cuthbert'
})
Use a customm repository to add additional methods to the ORM. this.firestore
and this.collection
are available for creating custom queries and operations.
import { Firestore } from '@google-cloud/firestore'
import { Repository } from 'firetype'
import { User } from './entity/User'
class TeamRepository extends Repository<User> {
constructor (firestore?: Firestore) {
super('root_collection_name', firestore) {
}
async setPremiumStatus(user: User, isPremium: boolean): Promise<User> {
const ref = this.firestore.doc(this.createDocRef(user.id))
const update: Partial<User> = { isPremium }
await ref.set(update, { merge: true })
return { ...user, ...update }
}
}