get channels with sub api
This commit is contained in:
parent
f0a431b93e
commit
0776130d37
@ -1,6 +1,7 @@
|
|||||||
import { NextFunction, Request, Response } from "express";
|
import { NextFunction, Request, Response } from "express";
|
||||||
import { buildDatatableQuery } from "@utils/datatable";
|
import { buildDatatableQuery } from "@utils/datatable";
|
||||||
import { db } from "@db/db";
|
import { db } from "@db/db";
|
||||||
|
import { client as bot } from "@bot/bot";
|
||||||
|
|
||||||
const isPostgres = db.client.config.client === "pg";
|
const isPostgres = db.client.config.client === "pg";
|
||||||
|
|
||||||
@ -11,12 +12,33 @@ export const datatable = async (request: Request, response: Response) => {
|
|||||||
"subscriptions"
|
"subscriptions"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
query.select("subscriptions.*")
|
||||||
|
.leftJoin("channels", "subscriptions.id", "=", "channels.subscription_id")
|
||||||
|
.select(db.raw(isPostgres
|
||||||
|
? "json_agg(channels.channel_id) as channels"
|
||||||
|
:"JSON_GROUP_ARRAY(channels.channel_id) as channels"
|
||||||
|
))
|
||||||
|
.groupBy("subscriptions.id")
|
||||||
|
|
||||||
const data = await query.where({ guild_id: request.params.guildId });
|
const data = await query.where({ guild_id: request.params.guildId });
|
||||||
|
|
||||||
|
data.forEach((item: any) => {
|
||||||
|
item.channels = item.channels === "[null]"
|
||||||
|
? []
|
||||||
|
: JSON.parse(item.channels);
|
||||||
|
|
||||||
|
// item.channels.forEach((channel: any) => {
|
||||||
|
// channel = {
|
||||||
|
// "channel_id": channel,
|
||||||
|
// "name": bot.channels.cache.filter(a => a.id === id).first().name;
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
});
|
||||||
|
|
||||||
response.json({
|
response.json({
|
||||||
data,
|
data,
|
||||||
|
recordsFiltered,
|
||||||
recordsTotal,
|
recordsTotal,
|
||||||
recordsFiltered
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
catch (error) {
|
catch (error) {
|
||||||
|
@ -35,18 +35,11 @@ export const buildDatatableQuery = async (request: { query: RequestQuery }, tabl
|
|||||||
.filter(column => column.searchable === "true")
|
.filter(column => column.searchable === "true")
|
||||||
.forEach((col, index) =>
|
.forEach((col, index) =>
|
||||||
index === 0
|
index === 0
|
||||||
? builder.where(col.data, "like", `%${search}%`)
|
? builder.where(`${tableName}.${col.data}`, "like", `%${search}%`)
|
||||||
: builder.orWhere(col.data, "like", `%${search}%`)
|
: builder.orWhere(`${tableName}.${col.data}`, "like", `%${search}%`)
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
console.log(query.toSQL());
|
console.log(query.toSQL());
|
||||||
// Object.keys(request.query.columns).forEach(key => {
|
|
||||||
// const column = request.query.columns[key];
|
|
||||||
// console.log(JSON.stringify(column));
|
|
||||||
// if (column.searchable === "true") {
|
|
||||||
// query = query.where(column.data, "like", `%${search}%`);
|
|
||||||
// }
|
|
||||||
// })
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const recordsTotalResult = await db(tableName).count("* as count").first();
|
const recordsTotalResult = await db(tableName).count("* as count").first();
|
||||||
@ -55,7 +48,7 @@ export const buildDatatableQuery = async (request: { query: RequestQuery }, tabl
|
|||||||
const recordsFilteredResult = await query.clone().count("* as count").first();
|
const recordsFilteredResult = await query.clone().count("* as count").first();
|
||||||
const recordsFiltered = recordsFilteredResult ? recordsFilteredResult.count : 0;
|
const recordsFiltered = recordsFilteredResult ? recordsFilteredResult.count : 0;
|
||||||
|
|
||||||
query = query.orderBy(order, direction).limit(size).offset(start);
|
query = query.orderBy(`${tableName}.${order}`, direction).limit(size).offset(start);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
query,
|
query,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user