import { Table } from "../../classes/Table";
import { IConfig } from "../../../interfaces/config";
import utils from "../../../utils/general-utils";
import { CONSTANT } from "../../../utils/constants";

export function get(table: Table, config: IConfig) {
    const pkLower = config.ORM_GENERATE.pkIdentifier;
    const pkUpper = utils.capitalizeFirstLetter(pkLower);
    const upperCaseTableName = utils.capitalizeFirstLetter(table.tableName);
    const pluralizedTableName = utils.pluralize(upperCaseTableName);
    const pluralizedUpperCaseTableName = utils.capitalizeFirstLetter(pluralizedTableName);

    return (
`return Router()
        ${CONSTANT.GENERATED_ROUTES}
        .get("/${pluralizedTableName}", ${upperCaseTableName}Controller.getAll${pluralizedUpperCaseTableName})
        .get("/${pluralizedTableName}/:${pkLower}", ${upperCaseTableName}Controller.getAll${pluralizedUpperCaseTableName}By${pkUpper})
        .get("/${table.tableName}/:${pkLower}", ${upperCaseTableName}Controller.get${upperCaseTableName}By${pkUpper})
        .post("/${table.tableName}", ${upperCaseTableName}Controller.save${upperCaseTableName})
        .post("/${pluralizedTableName}", ${upperCaseTableName}Controller.batchSave${pluralizedUpperCaseTableName})
        .put("/${table.tableName}", ${upperCaseTableName}Controller.update${upperCaseTableName})
        .delete("/${table.tableName}", ${upperCaseTableName}Controller.delete${upperCaseTableName}By${pkUpper})
        .delete("/${table.tableName}/:${pkLower}", ${upperCaseTableName}Controller.delete${upperCaseTableName}By${pkUpper})
`
    )
}