safe if user===undefined

This commit is contained in:
Andreas Knuth 2024-05-28 11:55:26 -05:00
parent b4cf17b8ea
commit 44acbcd4d0
1 changed files with 11 additions and 11 deletions

View File

@ -69,7 +69,7 @@ export class ListingsService {
.select() .select()
.from(commercials) .from(commercials)
.where(and(sql`${commercials.id} = ${id}`)); .where(and(sql`${commercials.id} = ${id}`));
result = result.filter(r => !r.draft || r.imagePath === emailToDirName(user.username) || user.roles.includes('ADMIN')); result = result.filter(r => !r.draft || r.imagePath === emailToDirName(user?.username) || user?.roles.includes('ADMIN'));
return result[0] as CommercialPropertyListing; return result[0] as CommercialPropertyListing;
} }
async findBusinessesById(id: string, user: JwtUser): Promise<CommercialPropertyListing> { async findBusinessesById(id: string, user: JwtUser): Promise<CommercialPropertyListing> {
@ -77,20 +77,13 @@ export class ListingsService {
.select() .select()
.from(businesses) .from(businesses)
.where(and(sql`${businesses.id} = ${id}`)); .where(and(sql`${businesses.id} = ${id}`));
result = result.filter(r => !r.draft || r.imageName === emailToDirName(user.username) || user.roles.includes('ADMIN')); result = result.filter(r => !r.draft || r.imageName === emailToDirName(user?.username) || user?.roles.includes('ADMIN'));
return result[0] as BusinessListing; return result[0] as BusinessListing;
} }
async findByImagePath(imagePath: string, serial: string): Promise<CommercialPropertyListing> {
const result = await this.conn
.select()
.from(commercials)
.where(and(sql`${commercials.imagePath} = ${imagePath}`, sql`${commercials.serialId} = ${serial}`, ne(commercials.draft, true)));
return result[0] as CommercialPropertyListing;
}
async findCommercialPropertiesByEmail(email: string, user: JwtUser): Promise<CommercialPropertyListing[]> { async findCommercialPropertiesByEmail(email: string, user: JwtUser): Promise<CommercialPropertyListing[]> {
const conditions = []; const conditions = [];
conditions.push(eq(commercials.imagePath, emailToDirName(email))); conditions.push(eq(commercials.imagePath, emailToDirName(email)));
if (email !== user.username && !user.roles.includes('ADMIN')) { if (email !== user?.username && (!user?.roles?.includes('ADMIN') ?? false)) {
conditions.push(ne(commercials.draft, true)); conditions.push(ne(commercials.draft, true));
} }
return (await this.conn return (await this.conn
@ -101,7 +94,7 @@ export class ListingsService {
async findBusinessesByEmail(email: string, user: JwtUser): Promise<BusinessListing[]> { async findBusinessesByEmail(email: string, user: JwtUser): Promise<BusinessListing[]> {
const conditions = []; const conditions = [];
conditions.push(eq(businesses.imageName, emailToDirName(email))); conditions.push(eq(businesses.imageName, emailToDirName(email)));
if (email !== user.username && !user.roles.includes('ADMIN')) { if (email !== user?.username && (!user?.roles?.includes('ADMIN') ?? false)) {
conditions.push(ne(businesses.draft, true)); conditions.push(ne(businesses.draft, true));
} }
return (await this.conn return (await this.conn
@ -109,6 +102,13 @@ export class ListingsService {
.from(businesses) .from(businesses)
.where(and(...conditions))) as CommercialPropertyListing[]; .where(and(...conditions))) as CommercialPropertyListing[];
} }
async findByImagePath(imagePath: string, serial: string): Promise<CommercialPropertyListing> {
const result = await this.conn
.select()
.from(commercials)
.where(and(sql`${commercials.imagePath} = ${imagePath}`, sql`${commercials.serialId} = ${serial}`, ne(commercials.draft, true)));
return result[0] as CommercialPropertyListing;
}
async createListing(data: BusinessListing | CommercialPropertyListing, table: typeof businesses | typeof commercials): Promise<BusinessListing | CommercialPropertyListing> { async createListing(data: BusinessListing | CommercialPropertyListing, table: typeof businesses | typeof commercials): Promise<BusinessListing | CommercialPropertyListing> {
data.created = new Date(); data.created = new Date();
data.updated = new Date(); data.updated = new Date();