All files / src/api/admin index.js

100% Statements 10/10
100% Branches 2/2
100% Functions 2/2
100% Lines 10/10

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47    1x 1x   1x 1x 1x                                         3x     2x   3x 1x           2x            
// @flow
 
import logger from '../../logger';
import callGQConsole, { type GQConsoleConf } from '../../service/gq-console';
 
import departments, { type AdminDepartmentsAPI } from './departments';
import projects, { type AdminProjectsAPI } from './projects';
import { users, gqConsoleUsers, type AdminUsersAPI } from './users';
 
export type Caller = (
  method: string,
  command: string,
  data?: any,
) => Promise<any>;
 
type AdminConf = GQConsoleConf;
 
/**
 * The admin API - An administrator interface with qstack’s account
 * system.
 */
export interface Admin {
  departments: AdminDepartmentsAPI;
  projects: AdminProjectsAPI;
  users: AdminUsersAPI;
}
 
export default function admin(conf: AdminConf): Admin {
  logger.silly(`Admin conf=${JSON.stringify(conf)}`);
 
  function call(method, command, data) {
    return callGQConsole(conf, method, command, data);
  }
  if (conf.legacy) {
    return {
      departments: departments(call),
      projects: projects(call),
      users: gqConsoleUsers(call),
    };
  }
  return {
    departments: departments(call),
    projects: projects(call),
    users: users(call),
  };
}