create static method

NSQuery create(
  1. NSDatabase database,
  2. String tableName, {
  3. Pointer<ns_transaction_t>? txn,
  4. List<String>? orderBy,
})

Implementation

static NSQuery create(
  NSDatabase database,
  String tableName, {
  Pointer<ns_transaction_t>? txn,
  List<String>? orderBy,
}) {
  final db = database.handle;
  final tablePtr = tableName.toNativeUtf8().cast<Char>();
  Pointer<Pointer<Char>>? orderPtr;
  try {
    if (orderBy != null && orderBy.isNotEmpty) {
      orderPtr = calloc<Pointer<Char>>(orderBy.length + 1);
      for (var i = 0; i < orderBy.length; i++) {
        orderPtr[i] = orderBy[i].toNativeUtf8().cast<Char>();
      }
      orderPtr[orderBy.length] = nullptr;
    }

    final query = nosqueel.ns_query_create(tablePtr, orderPtr ?? nullptr);
    if (query == nullptr) {
      throw StateError('ns_query_create failed for "$tableName"');
    }
    return NSQuery._(database, db, query, tableName, txn: txn);
  } finally {
    calloc.free(tablePtr);
    if (orderPtr != null) {
      for (var i = 0; i < orderBy!.length; i++) {
        calloc.free(orderPtr[i]);
      }
      calloc.free(orderPtr);
    }
  }
}