Fix for schema selection in pg adapter.
This commit is contained in:
@@ -40,5 +40,5 @@ export async function GET(
|
||||
endDate,
|
||||
});
|
||||
|
||||
return json({ ...data, comparison });
|
||||
return json({ ...data[0], comparison });
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
export const percentFilter = (data: any[]) => {
|
||||
if (!data) return [];
|
||||
if (!Array.isArray(data)) return [];
|
||||
const total = data.reduce((n, { y }) => n + y, 0);
|
||||
return data.map(({ x, y, ...props }) => ({ x, y, z: total ? (y / total) * 100 : 0, ...props }));
|
||||
};
|
||||
|
||||
@@ -170,6 +170,11 @@ async function rawQuery(sql: string, data: object): Promise<any> {
|
||||
log('PARAMETERS:\n', data);
|
||||
}
|
||||
const params = [];
|
||||
const schema = getSchema();
|
||||
|
||||
if (schema) {
|
||||
await client.$executeRawUnsafe(`SET search_path TO "${schema}";`);
|
||||
}
|
||||
|
||||
const query = sql?.replaceAll(/\{\{\s*(\w+)(::\w+)?\s*}}/g, (...args) => {
|
||||
const [, name, type] = args;
|
||||
@@ -182,8 +187,8 @@ async function rawQuery(sql: string, data: object): Promise<any> {
|
||||
});
|
||||
|
||||
return process.env.DATABASE_REPLICA_URL
|
||||
? client.$replica().$queryRawUnsafe(query, ...params)
|
||||
: client.$queryRawUnsafe(query, ...params);
|
||||
? await client.$replica().$queryRawUnsafe(query, ...params)
|
||||
: await client.$queryRawUnsafe(query, ...params);
|
||||
}
|
||||
|
||||
async function pagedQuery<T>(model: string, criteria: T, filters?: QueryFilters) {
|
||||
@@ -265,6 +270,12 @@ function transaction(input: any, options?: any) {
|
||||
return client.$transaction(input, options);
|
||||
}
|
||||
|
||||
function getSchema() {
|
||||
const connectionUrl = new URL(process.env.DATABASE_URL);
|
||||
|
||||
return connectionUrl.searchParams.get('schema');
|
||||
}
|
||||
|
||||
function getClient() {
|
||||
const prisma = new UmamiPrismaClient({
|
||||
url: process.env.DATABASE_URL,
|
||||
|
||||
@@ -24,7 +24,7 @@ async function relationalQuery(websiteId: string) {
|
||||
{ websiteId, startDate },
|
||||
);
|
||||
|
||||
return result[0] ?? null;
|
||||
return result?.[0] ?? null;
|
||||
}
|
||||
|
||||
async function clickhouseQuery(websiteId: string): Promise<{ x: number }> {
|
||||
|
||||
Reference in New Issue
Block a user