Skip to content

Configuration

createRepositoryConfig()

ParamètreTypeDéfautDescription
pathstringChemin de la collection Firestore
isGroupbooleantrue pour les requêtes de collection group
foreignKeysstring[]Clés pour les méthodes get.by*
queryKeysstring[]Clés pour les méthodes query.by*
refCbFunctionConstruit la DocumentReference
documentKeystring"docId"Champ injecté automatiquement avec l'ID Firestore
pathKeystring"documentPath"Champ injecté avec le chemin complet Firestore
createdKeystring"createdAt"Champ rempli à la création
updatedKeystring"updatedAt"Champ mis à jour à chaque écriture

Collection simple

typescript
users: createRepositoryConfig(userSchema)({
  path:        "users",
  isGroup:     false,
  foreignKeys: ["docId", "email"] as const,
  queryKeys:   ["isActive", "name"] as const,
  documentKey: "docId",
  pathKey:     "documentPath",
  createdKey:  "createdAt",
  updatedKey:  "updatedAt",
  refCb: (db: Firestore, docId: string) => db.collection("users").doc(docId),
});

Sous-collection

refCb reçoit les IDs parents dans l'ordre, puis l'ID du document en dernier.

typescript
comments: createRepositoryConfig<CommentModel>()({
  path:        "comments",
  isGroup:     true,
  foreignKeys: ["docId", "postId", "userId"] as const,
  queryKeys:   ["postId", "userId"] as const,
  documentKey: "docId",
  pathKey:     "documentPath",
  refCb: (db: Firestore, postId: string, commentId: string) =>
    db.collection("posts").doc(postId).collection("comments").doc(commentId),
});

buildRepositoryRelations()

Déclare les relations entre repositories.

typescript
const mappingWithRelations = buildRepositoryRelations(repositoryMapping, {
  users: {
    docId:  { repo: "posts",    key: "userId", type: "many" as const },
  },
  posts: {
    userId: { repo: "users",    key: "docId",  type: "one"  as const },
    docId:  { repo: "comments", key: "postId", type: "many" as const },
  },
  comments: {
    postId: { repo: "posts",    key: "docId",  type: "one" as const },
    userId: { repo: "users",    key: "docId",  type: "one" as const },
  },
});

createRepositoryMapping()

typescript
const db = getFirestore();
export const repos = createRepositoryMapping(db, mappingWithRelations);

Méthodes générées

NamespaceMéthodeDescription
(racine)create(data)Créer avec ID auto
(racine)set(id, data, options?)Créer / remplacer avec ID spécifique
(racine)update(id, data)Mise à jour partielle
(racine)delete(id)Supprimer un document
getby{ForeignKey}(value)Récupérer un document unique
getbyList(key, values[])Récupérer plusieurs documents par liste
queryby{QueryKey}(value, options?)Requêter par clé
queryby(options)Requête générique (options complètes)
querygetAll(options?)Récupérer tous les documents
querypaginate(options)Pagination basée sur curseur
querypaginateAll(options)Générateur async sur toutes les pages
queryonSnapshot(options, cb, errCb?)Listener temps réel
batchcreate()Batch atomique (max 500 opérations)
bulkset / update / deleteOpérations bulk (auto-découpées)
populate(doc, key | options)Peupler les documents liés
aggregatecount / sum / averageAgrégations côté serveur
transactionrun(callback)Transaction Firestore