Umbau zu tailwind + mobile friendly: LandingPage & Footer

This commit is contained in:
2024-07-02 19:17:14 +02:00
parent 3d5b7e3f39
commit 958f0afd9b
32 changed files with 1464 additions and 699 deletions

View File

@@ -0,0 +1,34 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
require("dotenv/config");
var node_postgres_1 = require("drizzle-orm/node-postgres");
var pg_1 = require("pg");
var Client = pg_1.default.Client;
var schema = require("./schema.js");
var fs_1 = require("fs");
var connectionString = process.env.DATABASE_URL;
// const pool = new Pool({connectionString})
var client = new Client({ connectionString: connectionString });
var db = (0, node_postgres_1.drizzle)(client, { schema: schema, logger: true });
//Broker
var filePath = "./data/broker.json";
var data = (0, fs_1.readFileSync)(filePath, 'utf8');
var jsonData = JSON.parse(data); // Erwartet ein Array von Objekten
await db.delete(schema.users);
console.log(jsonData.length);
for (var _i = 0, jsonData_1 = jsonData; _i < jsonData_1.length; _i++) {
var user = jsonData_1[_i];
delete user.id;
await db.insert(schema.users).values(user);
}
//Business Listings
// filePath = `./data/businesses.json`
// data = readFileSync(filePath, 'utf8');
// jsonData = JSON.parse(data); // Erwartet ein Array von Objekten
// db.delete(schema.businesses);
// for (const business of jsonData) {
// delete business.id
// await db.insert(schema.businesses).values(business);
// }
//End
//await client.end()

View File

@@ -63,6 +63,8 @@ for (const userData of usersData) {
user.companyLocation = userData.companyLocation;
user.offeredServices = userData.offeredServices;
user.gender = userData.gender;
user.customerType = 'professional';
user.customerSubType = 'broker';
user.created = new Date();
user.updated = new Date();
const u = await db.insert(schema.users).values(user).returning({ insertedId: schema.users.id, gender: schema.users.gender, email: schema.users.email });

View File

@@ -1,3 +1,15 @@
DO $$ BEGIN
CREATE TYPE "customerSubType" AS ENUM('broker', 'cpa', 'attorney', 'titleCompany', 'surveyor', 'appraiser');
EXCEPTION
WHEN duplicate_object THEN null;
END $$;
--> statement-breakpoint
DO $$ BEGIN
CREATE TYPE "customerType" AS ENUM('buyer', 'professional');
EXCEPTION
WHEN duplicate_object THEN null;
END $$;
--> statement-breakpoint
DO $$ BEGIN
CREATE TYPE "gender" AS ENUM('male', 'female');
EXCEPTION
@@ -79,6 +91,8 @@ CREATE TABLE IF NOT EXISTS "users" (
"hasCompanyLogo" boolean,
"licensedIn" jsonb,
"gender" "gender",
"customerType" "customerType",
"customerSubType" "customerSubType",
"created" timestamp,
"updated" timestamp
);

View File

@@ -1,7 +0,0 @@
DO $$ BEGIN
CREATE TYPE "customerType" AS ENUM('buyer', 'broker', 'professional');
EXCEPTION
WHEN duplicate_object THEN null;
END $$;
--> statement-breakpoint
ALTER TABLE "users" ADD COLUMN "customerType" "customerType";

View File

@@ -1,5 +1,5 @@
{
"id": "fc58c59b-ac5c-406e-8fdb-b05de40aed17",
"id": "f8241dfe-8f15-4656-aeb5-c9ef0ad65f28",
"prevId": "00000000-0000-0000-0000-000000000000",
"version": "5",
"dialect": "pg",
@@ -467,6 +467,18 @@
"primaryKey": false,
"notNull": false
},
"customerType": {
"name": "customerType",
"type": "customerType",
"primaryKey": false,
"notNull": false
},
"customerSubType": {
"name": "customerSubType",
"type": "customerSubType",
"primaryKey": false,
"notNull": false
},
"created": {
"name": "created",
"type": "timestamp",
@@ -487,6 +499,24 @@
}
},
"enums": {
"customerSubType": {
"name": "customerSubType",
"values": {
"broker": "broker",
"cpa": "cpa",
"attorney": "attorney",
"titleCompany": "titleCompany",
"surveyor": "surveyor",
"appraiser": "appraiser"
}
},
"customerType": {
"name": "customerType",
"values": {
"buyer": "buyer",
"professional": "professional"
}
},
"gender": {
"name": "gender",
"values": {

View File

@@ -1,518 +0,0 @@
{
"id": "0bc02618-4414-4e90-8c44-808737611da7",
"prevId": "fc58c59b-ac5c-406e-8fdb-b05de40aed17",
"version": "5",
"dialect": "pg",
"tables": {
"businesses": {
"name": "businesses",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "uuid",
"primaryKey": true,
"notNull": true,
"default": "gen_random_uuid()"
},
"userId": {
"name": "userId",
"type": "uuid",
"primaryKey": false,
"notNull": false
},
"type": {
"name": "type",
"type": "integer",
"primaryKey": false,
"notNull": false
},
"title": {
"name": "title",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false
},
"description": {
"name": "description",
"type": "text",
"primaryKey": false,
"notNull": false
},
"city": {
"name": "city",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false
},
"state": {
"name": "state",
"type": "char(2)",
"primaryKey": false,
"notNull": false
},
"price": {
"name": "price",
"type": "double precision",
"primaryKey": false,
"notNull": false
},
"favoritesForUser": {
"name": "favoritesForUser",
"type": "varchar(30)[]",
"primaryKey": false,
"notNull": false
},
"draft": {
"name": "draft",
"type": "boolean",
"primaryKey": false,
"notNull": false
},
"listingsCategory": {
"name": "listingsCategory",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false
},
"realEstateIncluded": {
"name": "realEstateIncluded",
"type": "boolean",
"primaryKey": false,
"notNull": false
},
"leasedLocation": {
"name": "leasedLocation",
"type": "boolean",
"primaryKey": false,
"notNull": false
},
"franchiseResale": {
"name": "franchiseResale",
"type": "boolean",
"primaryKey": false,
"notNull": false
},
"salesRevenue": {
"name": "salesRevenue",
"type": "double precision",
"primaryKey": false,
"notNull": false
},
"cashFlow": {
"name": "cashFlow",
"type": "double precision",
"primaryKey": false,
"notNull": false
},
"supportAndTraining": {
"name": "supportAndTraining",
"type": "text",
"primaryKey": false,
"notNull": false
},
"employees": {
"name": "employees",
"type": "integer",
"primaryKey": false,
"notNull": false
},
"established": {
"name": "established",
"type": "integer",
"primaryKey": false,
"notNull": false
},
"internalListingNumber": {
"name": "internalListingNumber",
"type": "integer",
"primaryKey": false,
"notNull": false
},
"reasonForSale": {
"name": "reasonForSale",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false
},
"brokerLicencing": {
"name": "brokerLicencing",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false
},
"internals": {
"name": "internals",
"type": "text",
"primaryKey": false,
"notNull": false
},
"imagePath": {
"name": "imagePath",
"type": "varchar(200)",
"primaryKey": false,
"notNull": false
},
"created": {
"name": "created",
"type": "timestamp",
"primaryKey": false,
"notNull": false
},
"updated": {
"name": "updated",
"type": "timestamp",
"primaryKey": false,
"notNull": false
},
"visits": {
"name": "visits",
"type": "integer",
"primaryKey": false,
"notNull": false
},
"lastVisit": {
"name": "lastVisit",
"type": "timestamp",
"primaryKey": false,
"notNull": false
}
},
"indexes": {},
"foreignKeys": {
"businesses_userId_users_id_fk": {
"name": "businesses_userId_users_id_fk",
"tableFrom": "businesses",
"tableTo": "users",
"columnsFrom": [
"userId"
],
"columnsTo": [
"id"
],
"onDelete": "no action",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {}
},
"commercials": {
"name": "commercials",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "uuid",
"primaryKey": true,
"notNull": true,
"default": "gen_random_uuid()"
},
"serial_id": {
"name": "serial_id",
"type": "serial",
"primaryKey": false,
"notNull": true
},
"userId": {
"name": "userId",
"type": "uuid",
"primaryKey": false,
"notNull": false
},
"type": {
"name": "type",
"type": "integer",
"primaryKey": false,
"notNull": false
},
"title": {
"name": "title",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false
},
"description": {
"name": "description",
"type": "text",
"primaryKey": false,
"notNull": false
},
"city": {
"name": "city",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false
},
"state": {
"name": "state",
"type": "char(2)",
"primaryKey": false,
"notNull": false
},
"price": {
"name": "price",
"type": "double precision",
"primaryKey": false,
"notNull": false
},
"favoritesForUser": {
"name": "favoritesForUser",
"type": "varchar(30)[]",
"primaryKey": false,
"notNull": false
},
"listingsCategory": {
"name": "listingsCategory",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false
},
"hideImage": {
"name": "hideImage",
"type": "boolean",
"primaryKey": false,
"notNull": false
},
"draft": {
"name": "draft",
"type": "boolean",
"primaryKey": false,
"notNull": false
},
"zipCode": {
"name": "zipCode",
"type": "integer",
"primaryKey": false,
"notNull": false
},
"county": {
"name": "county",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false
},
"email": {
"name": "email",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false
},
"website": {
"name": "website",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false
},
"phoneNumber": {
"name": "phoneNumber",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false
},
"imageOrder": {
"name": "imageOrder",
"type": "varchar(200)[]",
"primaryKey": false,
"notNull": false
},
"imagePath": {
"name": "imagePath",
"type": "varchar(200)",
"primaryKey": false,
"notNull": false
},
"created": {
"name": "created",
"type": "timestamp",
"primaryKey": false,
"notNull": false
},
"updated": {
"name": "updated",
"type": "timestamp",
"primaryKey": false,
"notNull": false
},
"visits": {
"name": "visits",
"type": "integer",
"primaryKey": false,
"notNull": false
},
"lastVisit": {
"name": "lastVisit",
"type": "timestamp",
"primaryKey": false,
"notNull": false
}
},
"indexes": {},
"foreignKeys": {
"commercials_userId_users_id_fk": {
"name": "commercials_userId_users_id_fk",
"tableFrom": "commercials",
"tableTo": "users",
"columnsFrom": [
"userId"
],
"columnsTo": [
"id"
],
"onDelete": "no action",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {}
},
"users": {
"name": "users",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "uuid",
"primaryKey": true,
"notNull": true,
"default": "gen_random_uuid()"
},
"firstname": {
"name": "firstname",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true
},
"lastname": {
"name": "lastname",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true
},
"email": {
"name": "email",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true
},
"phoneNumber": {
"name": "phoneNumber",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false
},
"description": {
"name": "description",
"type": "text",
"primaryKey": false,
"notNull": false
},
"companyName": {
"name": "companyName",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false
},
"companyOverview": {
"name": "companyOverview",
"type": "text",
"primaryKey": false,
"notNull": false
},
"companyWebsite": {
"name": "companyWebsite",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false
},
"companyLocation": {
"name": "companyLocation",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false
},
"offeredServices": {
"name": "offeredServices",
"type": "text",
"primaryKey": false,
"notNull": false
},
"areasServed": {
"name": "areasServed",
"type": "jsonb",
"primaryKey": false,
"notNull": false
},
"hasProfile": {
"name": "hasProfile",
"type": "boolean",
"primaryKey": false,
"notNull": false
},
"hasCompanyLogo": {
"name": "hasCompanyLogo",
"type": "boolean",
"primaryKey": false,
"notNull": false
},
"licensedIn": {
"name": "licensedIn",
"type": "jsonb",
"primaryKey": false,
"notNull": false
},
"gender": {
"name": "gender",
"type": "gender",
"primaryKey": false,
"notNull": false
},
"customerType": {
"name": "customerType",
"type": "customerType",
"primaryKey": false,
"notNull": false
},
"created": {
"name": "created",
"type": "timestamp",
"primaryKey": false,
"notNull": false
},
"updated": {
"name": "updated",
"type": "timestamp",
"primaryKey": false,
"notNull": false
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {}
}
},
"enums": {
"customerType": {
"name": "customerType",
"values": {
"buyer": "buyer",
"broker": "broker",
"professional": "professional"
}
},
"gender": {
"name": "gender",
"values": {
"male": "male",
"female": "female"
}
}
},
"schemas": {},
"_meta": {
"columns": {},
"schemas": {},
"tables": {}
}
}

View File

@@ -5,15 +5,8 @@
{
"idx": 0,
"version": "5",
"when": 1716495198537,
"tag": "0000_burly_bruce_banner",
"breakpoints": true
},
{
"idx": 1,
"version": "5",
"when": 1717085220861,
"tag": "0001_wet_mephistopheles",
"when": 1717933164279,
"tag": "0000_known_havok",
"breakpoints": true
}
]

View File

@@ -0,0 +1,75 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.commercials = exports.businesses = exports.users = exports.PG_CONNECTION = void 0;
var pg_core_1 = require("drizzle-orm/pg-core");
exports.PG_CONNECTION = 'PG_CONNECTION';
exports.users = (0, pg_core_1.pgTable)('users', {
id: (0, pg_core_1.uuid)('id').primaryKey().defaultRandom(),
firstname: (0, pg_core_1.varchar)('firstname', { length: 255 }).notNull(),
lastname: (0, pg_core_1.varchar)('lastname', { length: 255 }).notNull(),
email: (0, pg_core_1.varchar)('email', { length: 255 }).notNull(),
phoneNumber: (0, pg_core_1.varchar)('phoneNumber', { length: 255 }),
description: (0, pg_core_1.text)('description'),
companyName: (0, pg_core_1.varchar)('companyName', { length: 255 }),
companyOverview: (0, pg_core_1.text)('companyOverview'),
companyWebsite: (0, pg_core_1.varchar)('companyWebsite', { length: 255 }),
companyLocation: (0, pg_core_1.varchar)('companyLocation', { length: 255 }),
offeredServices: (0, pg_core_1.text)('offeredServices'),
areasServed: (0, pg_core_1.varchar)('areasServed', { length: 100 }).array(),
hasProfile: (0, pg_core_1.boolean)('hasProfile'),
hasCompanyLogo: (0, pg_core_1.boolean)('hasCompanyLogo'),
licensedIn: (0, pg_core_1.varchar)('licensedIn', { length: 50 }).array(),
});
exports.businesses = (0, pg_core_1.pgTable)('businesses', {
id: (0, pg_core_1.uuid)('id').primaryKey().defaultRandom(),
userId: (0, pg_core_1.uuid)('userId').references(function () { return exports.users.id; }),
type: (0, pg_core_1.varchar)('type', { length: 255 }),
title: (0, pg_core_1.varchar)('title', { length: 255 }),
description: (0, pg_core_1.text)('description'),
city: (0, pg_core_1.varchar)('city', { length: 255 }),
state: (0, pg_core_1.char)('state', { length: 2 }),
price: (0, pg_core_1.numeric)('price', { precision: 10, scale: 2 }),
favoritesForUser: (0, pg_core_1.varchar)('favoritesForUser', { length: 30 }).array(),
draft: (0, pg_core_1.boolean)('draft'),
listingsCategory: (0, pg_core_1.varchar)('listingsCategory', { length: 255 }),
realEstateIncluded: (0, pg_core_1.boolean)('realEstateIncluded'),
leasedLocation: (0, pg_core_1.boolean)('leasedLocation'),
franchiseResale: (0, pg_core_1.boolean)('franchiseResale'),
salesRevenue: (0, pg_core_1.numeric)('salesRevenue', { precision: 10, scale: 2 }),
cashFlow: (0, pg_core_1.numeric)('cashFlow', { precision: 10, scale: 2 }),
supportAndTraining: (0, pg_core_1.text)('supportAndTraining'),
employees: (0, pg_core_1.integer)('employees'),
established: (0, pg_core_1.integer)('established'),
internalListingNumber: (0, pg_core_1.integer)('internalListingNumber'),
reasonForSale: (0, pg_core_1.varchar)('reasonForSale', { length: 255 }),
brokerLicencing: (0, pg_core_1.varchar)('brokerLicencing', { length: 255 }),
internals: (0, pg_core_1.text)('internals'),
created: (0, pg_core_1.timestamp)('created'),
updated: (0, pg_core_1.timestamp)('updated'),
visits: (0, pg_core_1.integer)('visits'),
lastVisit: (0, pg_core_1.timestamp)('lastVisit'),
});
exports.commercials = (0, pg_core_1.pgTable)('commercials', {
id: (0, pg_core_1.uuid)('id').primaryKey().defaultRandom(),
userId: (0, pg_core_1.uuid)('userId').references(function () { return exports.users.id; }),
type: (0, pg_core_1.varchar)('type', { length: 255 }),
title: (0, pg_core_1.varchar)('title', { length: 255 }),
description: (0, pg_core_1.text)('description'),
city: (0, pg_core_1.varchar)('city', { length: 255 }),
state: (0, pg_core_1.char)('state', { length: 2 }),
price: (0, pg_core_1.numeric)('price', { precision: 10, scale: 2 }),
favoritesForUser: (0, pg_core_1.varchar)('favoritesForUser', { length: 30 }).array(),
hideImage: (0, pg_core_1.boolean)('hideImage'),
draft: (0, pg_core_1.boolean)('draft'),
zipCode: (0, pg_core_1.integer)('zipCode'),
county: (0, pg_core_1.varchar)('county', { length: 255 }),
email: (0, pg_core_1.varchar)('email', { length: 255 }),
website: (0, pg_core_1.varchar)('website', { length: 255 }),
phoneNumber: (0, pg_core_1.varchar)('phoneNumber', { length: 255 }),
imageOrder: (0, pg_core_1.varchar)('imageOrder', { length: 30 }).array(),
imagePath: (0, pg_core_1.varchar)('imagePath', { length: 30 }).array(),
created: (0, pg_core_1.timestamp)('created'),
updated: (0, pg_core_1.timestamp)('updated'),
visits: (0, pg_core_1.integer)('visits'),
lastVisit: (0, pg_core_1.timestamp)('lastVisit'),
});

View File

@@ -3,7 +3,8 @@ import { AreasServed, LicensedIn } from 'src/models/db.model';
export const PG_CONNECTION = 'PG_CONNECTION';
export const genderEnum = pgEnum('gender', ['male', 'female']);
export const customerTypeEnum = pgEnum('customerType', ['buyer', 'broker', 'professional']);
export const customerTypeEnum = pgEnum('customerType', ['buyer', 'professional']);
export const customerSubTypeEnum = pgEnum('customerSubType', ['broker', 'cpa', 'attorney', 'titleCompany', 'surveyor', 'appraiser']);
export const users = pgTable('users', {
id: uuid('id').primaryKey().defaultRandom(),
@@ -23,6 +24,7 @@ export const users = pgTable('users', {
licensedIn: jsonb('licensedIn').$type<LicensedIn[]>(),
gender: genderEnum('gender'),
customerType: customerTypeEnum('customerType'),
customerSubType: customerSubTypeEnum('customerSubType'),
created: timestamp('created'),
updated: timestamp('updated'),
});

View File

@@ -0,0 +1,21 @@
const fs = require('fs');
const path = require('path');
// Angenommen, du hast eine Datei `databaseModels.js` mit deinen pgTable-Definitionen
const { users } = require('./schema.js');
function generateTypeScriptInterface(tableDefinition, tableName) {
let interfaceString = `export interface ${tableName} {\n`;
for (const [column, definition] of Object.entries(tableDefinition)) {
// Du musst die Definition parsen, um den korrekten Typ zu extrahieren
const tsType = definition.type === 'uuid' ? 'string' :
definition.type.startsWith('varchar') || definition.type === 'text' ? 'string' :
definition.type === 'boolean' ? 'boolean' : 'any';
interfaceString += ` ${column}${definition.optional ? '?' : ''}: ${tsType};\n`;
}
interfaceString += '}\n';
return interfaceString;
}
const userModelInterface = generateTypeScriptInterface(users.columns, 'User');
fs.writeFileSync(path.join(__dirname, 'UserInterface.ts'), userModelInterface);