validatedCity, mask for input, confirmatonService, Version Info,
This commit is contained in:
@@ -1,10 +1,8 @@
|
||||
import { sql } from 'drizzle-orm';
|
||||
import { z } from 'zod';
|
||||
import { businesses, commercials, users } from './drizzle/schema.js';
|
||||
import { AreasServedSchema, CustomerSubTypeEnum, CustomerTypeEnum, GenderEnum, LicensedInSchema, User } from './models/db.model.js';
|
||||
import { User } from './models/db.model.js';
|
||||
export const EARTH_RADIUS_KM = 6371; // Erdradius in Kilometern
|
||||
export const EARTH_RADIUS_MILES = 3959; // Erdradius in Meilen
|
||||
|
||||
export function convertStringToNullUndefined(value) {
|
||||
// Konvertiert den Wert zu Kleinbuchstaben für eine case-insensitive Überprüfung
|
||||
const lowerCaseValue = typeof value === 'boolean' ? value : value?.toLowerCase();
|
||||
@@ -31,32 +29,70 @@ export const getDistanceQuery = (schema: typeof businesses | typeof commercials
|
||||
`;
|
||||
};
|
||||
|
||||
export function toDrizzleUser(user: User): {
|
||||
email: string;
|
||||
firstname: string;
|
||||
lastname: string;
|
||||
phoneNumber?: string;
|
||||
description?: string;
|
||||
companyName?: string;
|
||||
companyOverview?: string;
|
||||
companyWebsite?: string;
|
||||
companyLocation?: string;
|
||||
offeredServices?: string;
|
||||
areasServed?: (typeof AreasServedSchema._type)[];
|
||||
hasProfile?: boolean;
|
||||
hasCompanyLogo?: boolean;
|
||||
licensedIn?: (typeof LicensedInSchema._type)[];
|
||||
gender?: z.infer<typeof GenderEnum>;
|
||||
customerType?: z.infer<typeof CustomerTypeEnum>;
|
||||
customerSubType?: z.infer<typeof CustomerSubTypeEnum>;
|
||||
latitude?: number;
|
||||
longitude?: number;
|
||||
} {
|
||||
const { id, created, updated, ...drizzleUser } = user;
|
||||
type DrizzleUser = typeof users.$inferSelect; //Partial<InferInsertModel<typeof users>>;
|
||||
|
||||
export function convertUserToDrizzleUser(user: Partial<User>): DrizzleUser {
|
||||
const { companyLocation, ...restUser } = user;
|
||||
|
||||
// Ensure all required fields are present
|
||||
if (!user.id || !user.email || !user.firstname || !user.lastname) {
|
||||
throw new Error('Missing required fields: id, email, firstname, or lastname');
|
||||
}
|
||||
|
||||
return {
|
||||
...drizzleUser,
|
||||
email: drizzleUser.email,
|
||||
firstname: drizzleUser.firstname,
|
||||
lastname: drizzleUser.lastname,
|
||||
id: user.id,
|
||||
email: user.email,
|
||||
firstname: user.firstname,
|
||||
lastname: user.lastname,
|
||||
phoneNumber: user.phoneNumber || null,
|
||||
description: user.description || null,
|
||||
companyName: user.companyName || null,
|
||||
companyOverview: user.companyOverview || null,
|
||||
companyWebsite: user.companyWebsite || null,
|
||||
city: companyLocation?.city || null,
|
||||
state: companyLocation?.state || null,
|
||||
offeredServices: user.offeredServices || null,
|
||||
areasServed: user.areasServed || [],
|
||||
hasProfile: user.hasProfile || false,
|
||||
hasCompanyLogo: user.hasCompanyLogo || false,
|
||||
licensedIn: user.licensedIn || [],
|
||||
gender: user.gender || null,
|
||||
customerType: user.customerType || null,
|
||||
customerSubType: user.customerSubType || null,
|
||||
created: user.created || new Date(),
|
||||
updated: user.updated || new Date(),
|
||||
latitude: companyLocation?.latitude || 0,
|
||||
longitude: companyLocation?.longitude || 0,
|
||||
};
|
||||
}
|
||||
|
||||
export function convertDrizzleUserToUser(drizzleUser: Partial<DrizzleUser>): User {
|
||||
const user = {
|
||||
id: drizzleUser.id,
|
||||
firstname: drizzleUser.firstname,
|
||||
lastname: drizzleUser.lastname,
|
||||
email: drizzleUser.email,
|
||||
phoneNumber: drizzleUser.phoneNumber ?? null,
|
||||
description: drizzleUser.description ?? null,
|
||||
companyName: drizzleUser.companyName ?? null,
|
||||
companyOverview: drizzleUser.companyOverview ?? null,
|
||||
companyWebsite: drizzleUser.companyWebsite ?? null,
|
||||
companyLocation: {
|
||||
city: drizzleUser.city,
|
||||
state: drizzleUser.state,
|
||||
latitude: drizzleUser.latitude, // Latitude wird zugewiesen, auch wenn es nicht direkt benötigt wird
|
||||
longitude: drizzleUser.longitude, // Longitude wird zugewiesen, auch wenn es nicht direkt benötigt wird
|
||||
},
|
||||
offeredServices: drizzleUser.offeredServices ?? null,
|
||||
areasServed: drizzleUser.areasServed ?? null,
|
||||
hasProfile: drizzleUser.hasProfile ?? null,
|
||||
hasCompanyLogo: drizzleUser.hasCompanyLogo ?? null,
|
||||
licensedIn: drizzleUser.licensedIn ?? null,
|
||||
gender: drizzleUser.gender ?? null,
|
||||
customerType: drizzleUser.customerType,
|
||||
customerSubType: drizzleUser.customerSubType ?? null,
|
||||
created: drizzleUser.created ?? null,
|
||||
updated: drizzleUser.updated ?? null,
|
||||
};
|
||||
return user;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user