createTable method

void createTable(
  1. String table,
  2. List<String> columns, {
  3. List<ForeignKeyDefinition> foreignKeys = const <ForeignKeyDefinition>[],
})

Implementation

void createTable(
  String table,
  List<String> columns, {
  List<ForeignKeyDefinition> foreignKeys = const <ForeignKeyDefinition>[],
}) {
  final t = table.toNativeUtf8();
  final c = columns.join(',').toNativeUtf8();
  Pointer<Utf8>? f;
  try {
    final rc = foreignKeys.isEmpty
        ? _createTable(_handle, t, c)
        : (() {
            f = jsonEncode(
              foreignKeys
                  .map((ForeignKeyDefinition e) => e.toJson())
                  .toList(),
            ).toNativeUtf8();
            return _createTableFk(_handle, t, c, f!);
          })();
    if (rc != 0) {
      throw Exception(lastError());
    }
  } finally {
    malloc.free(t);
    malloc.free(c);
    if (f != null) {
      malloc.free(f!);
    }
  }
}