configure method

  1. @override
void configure()
override

Configures this API module. Usually defines the routes of this instance.

Implementation

@override
void configure() {
  if (onlyOnDevelopment && !development) return;

  routes.add(null, 'info', (request) async {
    var authResp = await checkAuthentication(request);
    if (authResp != null) return authResp;

    var openTransactions = Transaction.openInstances;

    var info =
        StringBuffer('Open Transactions (${openTransactions.length}):\n');

    for (var t in openTransactions) {
      info.write(t);
      info.write('\n');
    }

    Transaction.executingTransaction;

    return APIResponse.ok(info.toString());
  });

  routes.add(null, 'tables', (request) async {
    var authResp = await checkAuthentication(request);
    if (authResp != null) return authResp;

    var pathParams = _parsePath(request, 'tables');

    var json = _containsKey(pathParams ?? [], 'json');
    return tables(json: json);
  });

  routes.add(null, 'select', (request) async {
    var authResp = await checkAuthentication(request);
    if (authResp != null) return authResp;

    var pathParams = _parsePath(request, 'select');
    if (pathParams == null) {
      return APIResponse.notFound();
    }

    var table = pathParams.removeAt(0);

    var eager = pathParams.any((p) => equalsIgnoreAsciiCase(p, 'eager'))
        ? true
        : null;

    var json = _containsKey(pathParams, 'json');
    return select(table, request, eager: eager, json: json);
  });

  routes.add(null, 'insert', (request) async {
    var authResp = await checkAuthentication(request);
    if (authResp != null) return authResp;

    var pathParams = _parsePath(request, 'insert');
    if (pathParams == null) {
      return APIResponse.notFound();
    }

    var table = pathParams.removeAt(0);

    return insert(table, request);
  });

  routes.add(null, 'update', (request) async {
    var authResp = await checkAuthentication(request);
    if (authResp != null) return authResp;

    var pathParams = _parsePath(request, 'update');
    if (pathParams == null) {
      return APIResponse.notFound();
    }

    var table = pathParams.removeAt(0);
    var id = pathParams.isNotEmpty ? pathParams.removeAt(0) : null;

    return insert(table, request, id: id);
  });

  routes.add(null, 'delete', (request) async {
    var authResp = await checkAuthentication(request);
    if (authResp != null) return authResp;

    var pathParams = _parsePath(request, 'delete');
    if (pathParams == null) {
      return APIResponse.notFound();
    }

    var table = pathParams.removeAt(0);
    var id = pathParams.isNotEmpty ? pathParams.removeAt(0) : null;

    return delete(table, request, id);
  });

  routes.add(null, 'dump', (request) async {
    var authResp = await checkAuthentication(request);
    if (authResp != null) return authResp;

    var pathParams = _parsePath(request, 'dump');
    if (pathParams == null) {
      return APIResponse.notFound();
    }

    var zip = pathParams.any((p) => equalsIgnoreAsciiCase(p, 'zip'));

    return dump(zip);
  });
}