chore: wire Carplace into dev and production stacks
Build & Deploy / Build & Push Docker Image (push) Successful in 2m55s
Test / Type Check (all packages) (push) Successful in 54s
Build & Deploy / Deploy to VPS (push) Successful in 4s
Test / API Unit Tests (push) Failing after 48s
Test / Homepage Unit Tests (push) Successful in 43s
Test / Storefront Unit Tests (push) Failing after 40s
Test / Admin Unit Tests (push) Successful in 40s
Test / Dashboard Unit Tests (push) Failing after 42s
Test / API Integration Tests (push) Successful in 1m0s

This commit is contained in:
root
2026-07-02 18:15:42 -04:00
parent ad5f5ebab7
commit 7ff2dbb139
214 changed files with 5258 additions and 5906 deletions
@@ -44,7 +44,7 @@ CREATE TYPE "OfferType" AS ENUM ('PERCENTAGE', 'FIXED_AMOUNT', 'FREE_DAY', 'SPEC
CREATE TYPE "ReservationStatus" AS ENUM ('DRAFT', 'CONFIRMED', 'ACTIVE', 'COMPLETED', 'CANCELLED', 'NO_SHOW');
-- CreateEnum
CREATE TYPE "BookingSource" AS ENUM ('DASHBOARD', 'PUBLIC_SITE', 'MARKETPLACE', 'API');
CREATE TYPE "BookingSource" AS ENUM ('DASHBOARD', 'PUBLIC_SITE', 'CARPLACE', 'API');
-- CreateEnum
CREATE TYPE "CancelledBy" AS ENUM ('COMPANY', 'RENTER', 'SYSTEM');
@@ -200,8 +200,8 @@ CREATE TABLE "brand_settings" (
"paypalEmail" TEXT,
"paypalMerchantId" TEXT,
"paymentMethodsEnabled" "PaymentProvider"[],
"isListedOnMarketplace" BOOLEAN NOT NULL DEFAULT true,
"marketplaceRating" DOUBLE PRECISION,
"isListedOnCarplace" BOOLEAN NOT NULL DEFAULT true,
"carplaceRating" DOUBLE PRECISION,
"home_page_config" JSONB,
"menu_config" JSONB,
"updatedAt" TIMESTAMP(3) NOT NULL,
@@ -368,7 +368,7 @@ CREATE TABLE "reservations" (
"offerId" TEXT,
"promoCodeUsed" TEXT,
"source" "BookingSource" NOT NULL DEFAULT 'DASHBOARD',
"marketplaceRef" TEXT,
"carplaceRef" TEXT,
"status" "ReservationStatus" NOT NULL DEFAULT 'DRAFT',
"startDate" TIMESTAMP(3) NOT NULL,
"endDate" TIMESTAMP(3) NOT NULL,
@@ -2,7 +2,7 @@
ALTER TABLE "reservations" ADD COLUMN "reviewToken" TEXT;
CREATE UNIQUE INDEX "reservations_reviewToken_key" ON "reservations"("reviewToken");
-- Make renterId optional on reviews (reviews can come from non-marketplace customers via token link)
-- Make renterId optional on reviews (reviews can come from non-Carplace customers via token link)
ALTER TABLE "reviews" ALTER COLUMN "renterId" DROP NOT NULL;
ALTER TABLE "reviews" DROP CONSTRAINT IF EXISTS "reviews_renterId_fkey";
ALTER TABLE "reviews" ADD CONSTRAINT "reviews_renterId_fkey"
@@ -15,11 +15,11 @@ INSERT INTO "plan_features" ("id", "plan", "label", "sortOrder") VALUES
('plf_starter_1', 'STARTER', 'Up to 10 vehicles', 10),
('plf_starter_2', 'STARTER', '1 user account', 20),
('plf_starter_3', 'STARTER', 'Basic analytics', 30),
('plf_starter_4', 'STARTER', 'Marketplace listing', 40),
('plf_starter_4', 'STARTER', 'Carplace listing', 40),
('plf_growth_1', 'GROWTH', 'Up to 50 vehicles', 10),
('plf_growth_2', 'GROWTH', '5 user accounts', 20),
('plf_growth_3', 'GROWTH', 'Full analytics', 30),
('plf_growth_4', 'GROWTH', 'Priority marketplace placement', 40),
('plf_growth_4', 'GROWTH', 'Priority Carplace placement', 40),
('plf_growth_5', 'GROWTH', 'Custom branding', 50),
('plf_pro_1', 'PRO', 'Unlimited vehicles', 10),
('plf_pro_2', 'PRO', 'Unlimited user accounts', 20),
@@ -0,0 +1,30 @@
ALTER TYPE "NotificationType" ADD VALUE IF NOT EXISTS 'DOCUMENTS_REQUIRED';
ALTER TYPE "NotificationType" ADD VALUE IF NOT EXISTS 'PAYMENT_REQUIRED';
CREATE TABLE IF NOT EXISTS "carplace_funnel_events" (
"id" TEXT PRIMARY KEY,
"eventName" TEXT NOT NULL,
"companyId" TEXT,
"companySlug" TEXT NOT NULL,
"vehicleId" TEXT NOT NULL,
"renterId" TEXT,
"sessionId" TEXT,
"path" TEXT,
"metadata" JSONB NOT NULL DEFAULT '{}',
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS "carplace_funnel_events_eventName_createdAt_idx"
ON "carplace_funnel_events"("eventName", "createdAt");
CREATE INDEX IF NOT EXISTS "carplace_funnel_events_companyId_createdAt_idx"
ON "carplace_funnel_events"("companyId", "createdAt");
CREATE INDEX IF NOT EXISTS "carplace_funnel_events_companySlug_createdAt_idx"
ON "carplace_funnel_events"("companySlug", "createdAt");
CREATE INDEX IF NOT EXISTS "carplace_funnel_events_vehicleId_createdAt_idx"
ON "carplace_funnel_events"("vehicleId", "createdAt");
CREATE INDEX IF NOT EXISTS "carplace_funnel_events_renterId_createdAt_idx"
ON "carplace_funnel_events"("renterId", "createdAt");
@@ -1,30 +0,0 @@
ALTER TYPE "NotificationType" ADD VALUE IF NOT EXISTS 'DOCUMENTS_REQUIRED';
ALTER TYPE "NotificationType" ADD VALUE IF NOT EXISTS 'PAYMENT_REQUIRED';
CREATE TABLE IF NOT EXISTS "marketplace_funnel_events" (
"id" TEXT PRIMARY KEY,
"eventName" TEXT NOT NULL,
"companyId" TEXT,
"companySlug" TEXT NOT NULL,
"vehicleId" TEXT NOT NULL,
"renterId" TEXT,
"sessionId" TEXT,
"path" TEXT,
"metadata" JSONB NOT NULL DEFAULT '{}',
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS "marketplace_funnel_events_eventName_createdAt_idx"
ON "marketplace_funnel_events"("eventName", "createdAt");
CREATE INDEX IF NOT EXISTS "marketplace_funnel_events_companyId_createdAt_idx"
ON "marketplace_funnel_events"("companyId", "createdAt");
CREATE INDEX IF NOT EXISTS "marketplace_funnel_events_companySlug_createdAt_idx"
ON "marketplace_funnel_events"("companySlug", "createdAt");
CREATE INDEX IF NOT EXISTS "marketplace_funnel_events_vehicleId_createdAt_idx"
ON "marketplace_funnel_events"("vehicleId", "createdAt");
CREATE INDEX IF NOT EXISTS "marketplace_funnel_events_renterId_createdAt_idx"
ON "marketplace_funnel_events"("renterId", "createdAt");
+6 -6
View File
@@ -255,7 +255,7 @@ enum ReservationStatus {
enum BookingSource {
DASHBOARD
PUBLIC_SITE
MARKETPLACE
CARPLACE
API
}
@@ -980,8 +980,8 @@ model BrandSettings {
paypalEmail String?
paypalMerchantId String?
paymentMethodsEnabled PaymentProvider[]
isListedOnMarketplace Boolean @default(true)
marketplaceRating Float?
isListedOnCarplace Boolean @default(true)
carplaceRating Float?
homePageConfig Json? @map("home_page_config")
menuConfig Json? @map("menu_config")
@@ -1279,7 +1279,7 @@ model Reservation {
promoCodeUsed String?
vehicleCategory VehicleCategory?
source BookingSource @default(DASHBOARD)
marketplaceRef String?
carplaceRef String?
status ReservationStatus @default(DRAFT)
startDate DateTime
endDate DateTime
@@ -1352,7 +1352,7 @@ model ReservationPublicAccess {
@@map("reservation_public_access")
}
model MarketplaceFunnelEvent {
model CarplaceFunnelEvent {
id String @id @default(cuid())
eventName String
companyId String?
@@ -1369,7 +1369,7 @@ model MarketplaceFunnelEvent {
@@index([companySlug, createdAt])
@@index([vehicleId, createdAt])
@@index([renterId, createdAt])
@@map("marketplace_funnel_events")
@@map("carplace_funnel_events")
}