dbGetDocument<T> function

Future<List<T>> dbGetDocument<T>(
  1. String tableName,
  2. String doc, {
  3. String? field1,
  4. String? isEqualTo1,
})

Implementation

Future<List<T>> dbGetDocument<T>(String tableName, String doc, {
        String? field1, String? isEqualTo1
        }) async{

  // if (defaultTargetPlatform == TargetPlatform.windows){
  //   Map<String, dynamic>? querySnapshot = await dbGetDocumentInTableFirebaseRestApi(tableName, doc);
  //   if (querySnapshot == null)
  //     return [];
  //
  //   List<T> t = [];
  //   switch (T){
  //     case SubscriptionData:
  //       if (querySnapshot["subscriptions"] != null){
  //         for (var item in querySnapshot["subscriptions"]) {
  //           var s = SubscriptionData.fromJson(doc, item);
  //           t.add(s as T);
  //         }
  //       }
  //       break;
  //     default:
  //       throw Exception("not supported");
  //   }
  //   return t;
  // }

  var querySnapshot = await FirebaseFirestore.instance.collection(tableName).doc(doc).get();
  if (!querySnapshot.exists)
    return [];

  var d = querySnapshot.data();
  if (d == null)
    return [];

  List<T> t = [];
  switch (T){
    case UserData:
        t.add(UserData.fromJson(querySnapshot.id, d) as T);
      break;
    case OrderDataCache:
      var _meData = querySnapshot.data()!;
      for (var item in _meData.entries)
        t.add(OrderDataCache.fromJson(item.key, item.value) as T);
    break;
    case SubscriptionData:
      if (d["subscriptions"] != null)
        for (var item in querySnapshot["subscriptions"]) {
          var s = SubscriptionData.fromJson(doc, item);
          t.add(s as T);
        }
      break;
    default:
      throw Exception("not supported");
  }
  return t;
}