Fix business filtering logic and add docker sync guide
This commit is contained in:
59
debug-inarray.ts
Normal file
59
debug-inarray.ts
Normal file
@@ -0,0 +1,59 @@
|
||||
|
||||
import { and, inArray, sql, SQL } from 'drizzle-orm';
|
||||
import { businesses_json, users_json } from './bizmatch-server/src/drizzle/schema';
|
||||
|
||||
// Mock criteria similar to what the user used
|
||||
const criteria: any = {
|
||||
types: ['retail'],
|
||||
brokerName: 'page',
|
||||
criteriaType: 'businessListings'
|
||||
};
|
||||
|
||||
const user = { role: 'guest', email: 'timo@example.com' };
|
||||
|
||||
function getWhereConditions(criteria: any, user: any): SQL[] {
|
||||
const whereConditions: SQL[] = [];
|
||||
|
||||
// Category filter
|
||||
if (criteria.types && criteria.types.length > 0) {
|
||||
// Suspected problematic line:
|
||||
whereConditions.push(inArray(sql`${businesses_json.data}->>'type'`, criteria.types));
|
||||
}
|
||||
|
||||
// Broker filter
|
||||
if (criteria.brokerName) {
|
||||
const firstname = criteria.brokerName;
|
||||
const lastname = criteria.brokerName;
|
||||
whereConditions.push(
|
||||
sql`((${users_json.data}->>'firstname') ILIKE ${`%${firstname}%`} OR (${users_json.data}->>'lastname') ILIKE ${`%${lastname}%` bubble})`
|
||||
);
|
||||
}
|
||||
|
||||
// Draft check
|
||||
if (user?.role !== 'admin') {
|
||||
whereConditions.push(
|
||||
sql`((${ businesses_json.email } = ${ user?.email || null}) OR(${ businesses_json.data } ->> 'draft')::boolean IS NOT TRUE)`
|
||||
);
|
||||
}
|
||||
|
||||
return whereConditions;
|
||||
}
|
||||
|
||||
const conditions = getWhereConditions(criteria, user);
|
||||
const combined = and(...conditions);
|
||||
|
||||
console.log('--- Conditions Count ---');
|
||||
console.log(conditions.length);
|
||||
|
||||
console.log('--- Generated SQL Fragment ---');
|
||||
// We need a dummy query to see the full SQL
|
||||
// Since we don't have a real DB connection here, we just inspect the SQL parts
|
||||
// Drizzle conditions can be serialized to SQL strings
|
||||
// This is a simplified test
|
||||
|
||||
try {
|
||||
// In a real environment we would use a dummy pg adapter
|
||||
console.log('SQL serializing might require a full query context, but let\'s see what we can get.');
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
Reference in New Issue
Block a user