tables method

Future<APIResponse> tables({
  1. bool json = false,
})

Implementation

Future<APIResponse<dynamic>> tables({bool json = false}) async {
  if (onlyOnDevelopment && !development) {
    return APIResponse.error(error: "Unsupported request!");
  }

  _log.info("APIDBModule[REQUEST]> tables");

  var allRepositories = (await entityRepositoryProviders).allRepositories();

  var allRepositoriesEntries = allRepositories.entries
      .sorted((a, b) => a.value.name.compareTo(b.value.name))
      .toList();

  if (json) {
    var map = allRepositoriesEntries
        .map((e) {
          var type = e.key;
          var repo = e.value;
          return MapEntry('$type', repo.name);
        })
        .sorted((a, b) => a.key.compareTo(b.key))
        .toMapFromEntries();

    return APIResponse.ok(map, mimeType: 'json');
  }

  var htmlDoc = HTMLDocument.darkTheme(
    title: 'DB - Tables',
    top:
        _buildTop(apiRootName: apiRoot.name, apiRootVersion: apiRoot.version),
    footer: _buildFooter(),
  );

  var content = [];

  content.add('<br><table class="center">');
  content.add(
      '<thead><tr><td style="text-align: right">Type: &nbsp;</td><td style="text-align: center">Table:</td><td style="text-align: center">Operations:</td></tr></thead>');

  for (var e in allRepositoriesEntries) {
    var type = e.key;
    var repo = e.value;
    var repoName = repo.name;
    content.add(
        '<tr><td style="text-align: right"><b>$type:</b> &nbsp;</td><td style="text-align: center">$repoName</td><td> &nbsp; [ <a href="${basePath}select/$repoName">select</a> &nbsp;|&nbsp; <a href="${basePath}insert/$repoName">insert</a> ] &nbsp;</td></tr>');
  }

  content.add('</table>');

  content.add(
      '<br><div style="width: 100%; text-align: center;"><i><a href="${basePath}tables/json">JSON</a></i></div>');

  htmlDoc.content = content;

  var html = htmlDoc.build();

  return APIResponse.ok(html, mimeType: 'html');
}