A library to put wrapper arround firebase firestore to access it in typesafe elegant way.

Usage

Refer Examples for more usage. Refer Github Repo for detailed example usage.

@Model()
class UserProfile extends BaseModel {
  String uid = "";
  String name = "";
}

@FirestoreService("UserDataStore")
const userDataSchema = {
  'UserProfiles': (
    type: UserProfile,
    subCollections: {'AuditTrail': (type: AuditTrailEntry)},
  ),
};

Future<void> addUser(String uid, String name) async {
  final UserDataStore store = UserDataStore();
  final UserProfile newUser = UserProfile();
  newUser.uid = uid;
  newUser.name = name;
  

  // Add document with autogenerated id
  final doc = (await store.UserProfiles.add(newUser));

  final AuditTrailEntry entry = AuditTrailEntry();
  entry.uid = newUser.uid;
  entry.name = newUser.name;
  entry.modifiedAt = DateTime.now();
  entry.modifiedBy = "System";

  // Add document with specified id
  final entryDoc = await doc.AuditTrail.add(entry, "1");
}

Future<UserProfile> getUser(String docId) async {
  final UserDataStore store = UserDataStore();
  UserProfile user = await store.UserProfiles[docId].data;
  AuditTrailEntry entry = await store.UserProfiles[docId].AuditTrail["1"].data;

  return user;
}