From 98c1d5247e439f8715a9a3040bf6092863b68760 Mon Sep 17 00:00:00 2001 From: Aymeric Rabot Date: Fri, 27 Feb 2026 23:49:48 -0500 Subject: [PATCH] feat: filter empty projects from public gallery (#125) * feat(community): filter empty projects from public gallery Add is_empty column to projects table so the public gallery only shows projects with actual content. Scene graph emptiness is computed on save and on creation, and a backfill migration marks existing non-empty projects. Also cleans up import ordering, fixes README migration path, and removes stale feedback table migration. Co-Authored-By: Claude Opus 4.6 * Use ESNext modules and bundler resolution Update packages/db tsconfig to emit ESNext modules and use 'bundler' moduleResolution. This enables modern ESM output and bundler-style resolution for the db package (keeps outDir and rootDir unchanged). * feat(editor): add dark mode theme and grid visibility toggle Add theme state to viewer store with light/dark modes, dark-aware lighting and background colors, grid show/hide toggle in settings, and theme toggle buttons in the sidebar. Co-Authored-By: Claude Opus 4.6 * Add ground occluder, animated lighting & UI tweaks Introduce a ground occluder and smoother animated lighting while adjusting editor UI and icons. Viewer: add GroundOccluder (uses polygon-clipping to union slab/zone polygons) and AnimatedBackground, integrate both into the Canvas; improve Lights to interpolate intensities/colors/ambient for smooth theme transitions. Editor: refactor sidebar header to support inline project title editing and move the theme toggle; replace some lucide icons with image assets and add a settings icon (apps/editor/public/icons/settings.png). Also add polygon-clipping to the viewer package dependencies. * Update dark mode background color and clean up imports Co-Authored-By: Claude Opus 4.6 --------- Co-authored-by: Claude Opus 4.6 --- apps/editor/app/editor/[projectId]/page.tsx | 6 +- apps/editor/components/editor/grid.tsx | 26 +- .../components/ui/sidebar/app-sidebar.tsx | 112 +- .../components/ui/sidebar/icon-rail.tsx | 53 +- .../sidebar/panels/settings-panel/index.tsx | 12 + apps/editor/features/community/README.md | 2 +- .../features/community/lib/models/actions.ts | 9 + .../community/lib/models/scene-graph-utils.ts | 25 + .../community/lib/projects/actions.ts | 8 +- .../features/community/lib/projects/types.ts | 2 + apps/editor/public/icons/settings.png | Bin 0 -> 124407 bytes bun.lock | 7 + packages/db/src/schema/projects/projects.ts | 1 + .../20240218000001_create_feedback_table.sql | 24 - packages/db/tsconfig.json | 4 +- packages/viewer/package.json | 1 + .../src/components/viewer/ground-occluder.tsx | 70 + .../viewer/src/components/viewer/index.tsx | 57 +- .../viewer/src/components/viewer/lights.tsx | 98 +- packages/viewer/src/store/use-viewer.ts | 26 +- .../20260227200237_brown_quasimodo.sql | 1 + ...20260227204328_backfill_empty_projects.sql | 38 + .../meta/20260227200237_snapshot.json | 1135 +++++++++++++++++ .../meta/20260227204328_snapshot.json | 1135 +++++++++++++++++ supabase/migrations/meta/_journal.json | 14 + 25 files changed, 2775 insertions(+), 91 deletions(-) create mode 100644 apps/editor/features/community/lib/models/scene-graph-utils.ts create mode 100644 apps/editor/public/icons/settings.png delete mode 100644 packages/db/supabase/migrations/20240218000001_create_feedback_table.sql create mode 100644 packages/viewer/src/components/viewer/ground-occluder.tsx create mode 100644 supabase/migrations/20260227200237_brown_quasimodo.sql create mode 100644 supabase/migrations/20260227204328_backfill_empty_projects.sql create mode 100644 supabase/migrations/meta/20260227200237_snapshot.json create mode 100644 supabase/migrations/meta/20260227204328_snapshot.json diff --git a/apps/editor/app/editor/[projectId]/page.tsx b/apps/editor/app/editor/[projectId]/page.tsx index 8fa64c75..d3b40e7e 100644 --- a/apps/editor/app/editor/[projectId]/page.tsx +++ b/apps/editor/app/editor/[projectId]/page.tsx @@ -1,11 +1,11 @@ 'use client' -import Editor from '@/components/editor' import { useParams, useRouter } from 'next/navigation' import { useEffect, useState } from 'react' -import { useProjectStore } from '@/features/community/lib/projects/store' -import { useAuth } from '@/features/community/lib/auth/hooks' +import Editor from '@/components/editor' import { SceneLoader } from '@/components/ui/scene-loader' +import { useAuth } from '@/features/community/lib/auth/hooks' +import { useProjectStore } from '@/features/community/lib/projects/store' export default function EditorPage() { const params = useParams() diff --git a/apps/editor/components/editor/grid.tsx b/apps/editor/components/editor/grid.tsx index 1b5c9c0b..d2577285 100644 --- a/apps/editor/components/editor/grid.tsx +++ b/apps/editor/components/editor/grid.tsx @@ -32,6 +32,12 @@ export const Grid = ({ fadeStrength?: number revealRadius?: number }) => { + const theme = useViewer((state) => state.theme) + + // Use slightly lighter colors for dark mode grid to make it apparent + const effectiveCellColor = theme === 'dark' ? '#555566' : cellColor + const effectiveSectionColor = theme === 'dark' ? '#666677' : sectionColor + const cursorPositionRef = useRef(new Vector2(0, 0)) const material = useMemo(() => { @@ -78,13 +84,16 @@ export const Grid = ({ // Mix colors based on section grid const gridColor = mix( - color(cellColor), - color(sectionColor), + color(effectiveCellColor), + color(effectiveSectionColor), float(sectionThickness).mul(g2).min(1), ) - // Combined alpha with cursor fade - const alpha = g1.add(g2).mul(fade).mul(cursorFade) + // Baseline alpha: small amount of opacity everywhere the grid exists + const baseAlpha = float(0.4) // Subtle global visibility + + // Combined alpha with cursor fade and baseline minimum + const alpha = g1.add(g2).mul(fade).mul(cursorFade.max(baseAlpha)) const finalAlpha = mix(alpha.mul(0.75), alpha, g2) return new MeshBasicNodeMaterial({ @@ -96,13 +105,14 @@ export const Grid = ({ }, [ cellSize, cellThickness, - cellColor, + effectiveCellColor, sectionSize, sectionThickness, - sectionColor, + effectiveSectionColor, fadeDistance, fadeStrength, revealRadius, + theme, ]) const gridRef = useRef(null!) @@ -137,8 +147,10 @@ export const Grid = ({ setGridY(newY) }) + const showGrid = useViewer((state) => state.showGrid) + return ( - + ) diff --git a/apps/editor/components/ui/sidebar/app-sidebar.tsx b/apps/editor/components/ui/sidebar/app-sidebar.tsx index 2da9d9a4..43163799 100644 --- a/apps/editor/components/ui/sidebar/app-sidebar.tsx +++ b/apps/editor/components/ui/sidebar/app-sidebar.tsx @@ -2,7 +2,8 @@ import { useState, useRef, useEffect, useCallback } from "react"; import { IconRail, type PanelId } from "./icon-rail"; -import { Pencil } from "lucide-react"; +import { Pencil, Moon, Sun, Monitor } from "lucide-react"; +import { motion } from "framer-motion"; import { Sidebar, @@ -14,15 +15,23 @@ import { SettingsPanel } from "./panels/settings-panel"; import { SitePanel } from "./panels/site-panel"; import { useProjectStore } from "@/features/community/lib/projects/store"; import { updateProjectName } from "@/features/community/lib/projects/actions"; +import { useViewer } from "@pascal-app/viewer"; export function AppSidebar() { const [activePanel, setActivePanel] = useState("site"); const activeProject = useProjectStore((s) => s.activeProject); - + const theme = useViewer((state) => state.theme); + const setTheme = useViewer((state) => state.setTheme); + const [mounted, setMounted] = useState(false); + const [isEditingTitle, setIsEditingTitle] = useState(false); const [titleValue, setTitleValue] = useState(""); const inputRef = useRef(null); + useEffect(() => { + setMounted(true); + }, []); + useEffect(() => { if (isEditingTitle) { setTitleValue(activeProject?.name || "Untitled Project"); @@ -93,29 +102,84 @@ export function AppSidebar() { {/* Panel Content */}
- - {isEditingTitle ? ( - setTitleValue(e.target.value)} - onKeyDown={handleKeyDown} - onBlur={handleSaveTitle} - placeholder="Untitled Project" - className="w-full bg-transparent text-foreground outline-none border-b border-primary/50 focus:border-primary rounded-none px-0 py-0 m-0 h-7 font-semibold text-lg" - /> - ) : ( -
setIsEditingTitle(true)} - > -

- {activeProject?.name || "Untitled Project"} -

- + +
+
+ {isEditingTitle ? ( + setTitleValue(e.target.value)} + onKeyDown={handleKeyDown} + onBlur={handleSaveTitle} + placeholder="Untitled Project" + className="w-full bg-transparent text-foreground outline-none border-b border-primary/50 focus:border-primary rounded-none px-0 py-0 m-0 h-7 font-semibold text-lg" + /> + ) : ( +
setIsEditingTitle(true)} + > +

+ {activeProject?.name || "Untitled Project"} +

+ +
+ )}
- )} + + {mounted && ( + + )} +
+ {getPanelTitle()} diff --git a/apps/editor/components/ui/sidebar/icon-rail.tsx b/apps/editor/components/ui/sidebar/icon-rail.tsx index 93e78e2a..0fd8a443 100644 --- a/apps/editor/components/ui/sidebar/icon-rail.tsx +++ b/apps/editor/components/ui/sidebar/icon-rail.tsx @@ -1,14 +1,16 @@ "use client"; -import { Building2, Settings } from "lucide-react"; +import { Moon, Sun } from "lucide-react"; import Link from "next/link"; import Image from "next/image"; +import { useEffect, useState } from "react"; import { Tooltip, TooltipContent, TooltipTrigger, } from "@/components/ui/primitives/tooltip"; import { cn } from "@/lib/utils"; +import { useViewer } from "@pascal-app/viewer"; export type PanelId = "site" | "settings"; @@ -18,9 +20,9 @@ interface IconRailProps { className?: string; } -const panels: { id: PanelId; icon: typeof Building2; label: string }[] = [ - { id: "site", icon: Building2, label: "Site" }, - { id: "settings", icon: Settings, label: "Settings" }, +const panels: { id: PanelId; iconSrc: string; label: string }[] = [ + { id: "site", iconSrc: "/icons/level.png", label: "Site" }, + { id: "settings", iconSrc: "/icons/settings.png", label: "Settings" }, ]; export function IconRail({ @@ -28,10 +30,18 @@ export function IconRail({ onPanelChange, className, }: IconRailProps) { + const theme = useViewer((state) => state.theme); + const setTheme = useViewer((state) => state.setTheme); + const [mounted, setMounted] = useState(false); + + useEffect(() => { + setMounted(true); + }, []); + return (
@@ -58,7 +68,6 @@ export function IconRail({
{panels.map((panel) => { - const Icon = panel.icon; const isActive = activePanel === panel.id; return ( @@ -67,19 +76,45 @@ export function IconRail({ className={cn( "flex h-9 w-9 items-center justify-center rounded-lg transition-all", isActive - ? "bg-primary text-primary-foreground" - : "text-muted-foreground hover:bg-accent hover:text-accent-foreground", + ? "bg-accent" + : "hover:bg-accent", )} onClick={() => onPanelChange(panel.id)} type="button" > - + {panel.label} {panel.label} ); })} + + {/* Spacer */} +
+ + {/* Theme Toggle */} + {mounted && ( + + + + + Toggle theme + + )}
); } diff --git a/apps/editor/components/ui/sidebar/panels/settings-panel/index.tsx b/apps/editor/components/ui/sidebar/panels/settings-panel/index.tsx index 71113dcb..f2997a7a 100644 --- a/apps/editor/components/ui/sidebar/panels/settings-panel/index.tsx +++ b/apps/editor/components/ui/sidebar/panels/settings-panel/index.tsx @@ -309,6 +309,18 @@ export function SettingsPanel() { onCheckedChange={(checked) => handleVisibilityChange('showGuidesPublic', checked)} />
+
+
+
Show Grid
+
+ Visible only in the editor +
+
+ state.showGrid)} + onCheckedChange={(checked) => useViewer.getState().setShowGrid(checked)} + /> +
)} diff --git a/apps/editor/features/community/README.md b/apps/editor/features/community/README.md index 4de77f66..fbe028f8 100644 --- a/apps/editor/features/community/README.md +++ b/apps/editor/features/community/README.md @@ -162,7 +162,7 @@ This feature requires: - `properties` - Property records - `properties_addresses` - Property addresses - `properties_models` - Scene graph models -- Database migrations are managed in `packages/db/supabase/migrations/` +- Database migrations are managed in `supabase/migrations/` ## Development diff --git a/apps/editor/features/community/lib/models/actions.ts b/apps/editor/features/community/lib/models/actions.ts index 0aad71f4..2bdea9cb 100644 --- a/apps/editor/features/community/lib/models/actions.ts +++ b/apps/editor/features/community/lib/models/actions.ts @@ -10,6 +10,7 @@ import { createServerSupabaseClient } from '../database/server' import { getSession } from '../auth/server' import { createId } from '../utils/id-generator' import type { ActionResult } from '../projects/actions' +import { isSceneGraphEmpty } from './scene-graph-utils' export interface SceneGraph { nodes: Record @@ -166,6 +167,14 @@ export async function saveProjectModel( } } + // Determine if scene graph is empty + const isEmpty = isSceneGraphEmpty(sceneGraph) + + // Update the project's is_empty flag + await (supabase.from('projects') as any) + .update({ is_empty: isEmpty }) + .eq('id', projectId) + // Check if a model already exists const { data: existingModel } = await supabase .from('projects_models') diff --git a/apps/editor/features/community/lib/models/scene-graph-utils.ts b/apps/editor/features/community/lib/models/scene-graph-utils.ts new file mode 100644 index 00000000..af4edba8 --- /dev/null +++ b/apps/editor/features/community/lib/models/scene-graph-utils.ts @@ -0,0 +1,25 @@ +import type { SceneGraph } from './actions' + +const DEFAULT_NODE_TYPES = ['site', 'building', 'level'] + +export function isSceneGraphEmpty(sceneGraph: SceneGraph | any): boolean { + if (!sceneGraph?.nodes) return true + + const nodes = Object.values(sceneGraph.nodes) as any[] + + if (nodes.length > 3) { + return false + } + + const hasNonDefaultNodes = nodes.some((n) => !DEFAULT_NODE_TYPES.includes(n.type)) + if (hasNonDefaultNodes) { + return false + } + + const levelNode = nodes.find((n) => n.type === 'level') + if (Array.isArray(levelNode?.children) && levelNode.children.length > 0) { + return false + } + + return true +} diff --git a/apps/editor/features/community/lib/projects/actions.ts b/apps/editor/features/community/lib/projects/actions.ts index a00efd9d..ac0dd3bf 100644 --- a/apps/editor/features/community/lib/projects/actions.ts +++ b/apps/editor/features/community/lib/projects/actions.ts @@ -8,7 +8,8 @@ import { createServerSupabaseClient } from '../database/server' import { getSession } from '../auth/server' import { createId } from '../utils/id-generator' -import type { CreateProjectParams, Project, Database } from './types' +import { isSceneGraphEmpty } from '../models/scene-graph-utils' +import type { CreateProjectParams, Project } from './types' export type ActionResult = { success: boolean @@ -250,6 +251,9 @@ export async function createProject(params: CreateProjectParams): Promise> { owner:auth_users!owner_id(id, name, username, image) `) .eq('is_private', false) + .eq('is_empty', false) .order('views', { ascending: false }) .limit(50) diff --git a/apps/editor/features/community/lib/projects/types.ts b/apps/editor/features/community/lib/projects/types.ts index c286b77d..b8b5f40e 100644 --- a/apps/editor/features/community/lib/projects/types.ts +++ b/apps/editor/features/community/lib/projects/types.ts @@ -13,6 +13,7 @@ export type DbProject = { created_at: string updated_at: string is_private: boolean + is_empty: boolean show_scans_public: boolean show_guides_public: boolean views: number @@ -106,6 +107,7 @@ export type Project = { updated_at: string // Community features is_private: boolean + is_empty: boolean show_scans_public: boolean show_guides_public: boolean views: number diff --git a/apps/editor/public/icons/settings.png b/apps/editor/public/icons/settings.png new file mode 100644 index 0000000000000000000000000000000000000000..14cb0c68abb75c593c08238b7c0ee29d92a0585f GIT binary patch literal 124407 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ⅆ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%0DBe{5! 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 literal 0 HcmV?d00001 diff --git a/bun.lock b/bun.lock index 5bb8e242..6c8fffb4 100644 --- a/bun.lock +++ b/bun.lock @@ -174,6 +174,7 @@ "name": "@pascal-app/viewer", "version": "0.1.13", "dependencies": { + "polygon-clipping": "^0.15.7", "zustand": "^5", }, "devDependencies": { @@ -1314,6 +1315,8 @@ "picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + "polygon-clipping": ["polygon-clipping@0.15.7", "", { "dependencies": { "robust-predicates": "^3.0.2", "splaytree": "^3.1.0" } }, "sha512-nhfdr83ECBg6xtqOAJab1tbksbBAOMUltN60bU+llHVOL0e5Onm1WpAXXWXVB39L8AJFssoIhEVuy/S90MmotA=="], + "portless": ["portless@0.4.2", "", { "dependencies": { "chalk": "^5.3.0" }, "os": [ "linux", "darwin", ], "bin": { "portless": "dist/cli.js" } }, "sha512-/G3jIeD1XokoO9KY/lUGTV9irKz3tgx8yqHkz+hvj/86QeR219GvYFB+QEfpvjRlvvLVJa5vE7BkRfBZBe/lQg=="], "possible-typed-array-names": ["possible-typed-array-names@1.1.0", "", {}, "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg=="], @@ -1388,6 +1391,8 @@ "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="], + "robust-predicates": ["robust-predicates@3.0.2", "", {}, "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg=="], + "rou3": ["rou3@0.7.12", "", {}, "sha512-iFE4hLDuloSWcD7mjdCDhx2bKcIsYbtOTpfH5MHHLSKMOUyjqQXTeZVa289uuwEGEKFoE/BAPbhaU4B774nceg=="], "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], @@ -1438,6 +1443,8 @@ "source-map-support": ["source-map-support@0.5.21", "", { "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w=="], + "splaytree": ["splaytree@3.2.3", "", {}, "sha512-7OXrNWzy6CK+r7Ch9OLPBDTKfB6XlWHjX4P0RU5B3IgFuWPeYN0XtRtlexGRjgbQxpfaUve6jTAwBGWuGntz/w=="], + "split2": ["split2@4.2.0", "", {}, "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg=="], "stats-gl": ["stats-gl@2.4.2", "", { "dependencies": { "@types/three": "*", "three": "^0.170.0" } }, "sha512-g5O9B0hm9CvnM36+v7SFl39T7hmAlv541tU81ME8YeSb3i1CIP5/QdDeSB3A0la0bKNHpxpwxOVRo2wFTYEosQ=="], diff --git a/packages/db/src/schema/projects/projects.ts b/packages/db/src/schema/projects/projects.ts index f8cb47f8..3aa5c4d3 100644 --- a/packages/db/src/schema/projects/projects.ts +++ b/packages/db/src/schema/projects/projects.ts @@ -20,6 +20,7 @@ export const projects = pgTable( metadata: t.jsonb('metadata'), // Community features isPrivate: t.boolean('is_private').notNull().default(true), + isEmpty: t.boolean('is_empty').notNull().default(true), showScansPublic: t.boolean('show_scans_public').notNull().default(true), showGuidesPublic: t.boolean('show_guides_public').notNull().default(true), views: t.integer('views').notNull().default(0), diff --git a/packages/db/supabase/migrations/20240218000001_create_feedback_table.sql b/packages/db/supabase/migrations/20240218000001_create_feedback_table.sql deleted file mode 100644 index 3c2124e4..00000000 --- a/packages/db/supabase/migrations/20240218000001_create_feedback_table.sql +++ /dev/null @@ -1,24 +0,0 @@ --- Create feedback table -CREATE TABLE IF NOT EXISTS feedback ( - id TEXT NOT NULL PRIMARY KEY, - user_id TEXT, - message TEXT NOT NULL, - created_at TIMESTAMPTZ NOT NULL DEFAULT NOW() -); - --- Enable Row Level Security -ALTER TABLE feedback ENABLE ROW LEVEL SECURITY; - --- Allow anyone (authenticated or anonymous) to submit feedback -CREATE POLICY "Anyone can insert feedback" - ON feedback - FOR INSERT - TO anon, authenticated - WITH CHECK (true); - --- Allow service role full access (for admin review) -CREATE POLICY "Service role full access" - ON feedback - TO service_role - USING (true) - WITH CHECK (true); diff --git a/packages/db/tsconfig.json b/packages/db/tsconfig.json index c6daff18..acff721f 100644 --- a/packages/db/tsconfig.json +++ b/packages/db/tsconfig.json @@ -2,7 +2,9 @@ "extends": "@repo/typescript-config/base.json", "compilerOptions": { "outDir": "dist", - "rootDir": "src" + "rootDir": "src", + "module": "ESNext", + "moduleResolution": "bundler" }, "include": ["src"], "exclude": ["node_modules", "dist"] diff --git a/packages/viewer/package.json b/packages/viewer/package.json index 508a27d2..c9d6e4cb 100644 --- a/packages/viewer/package.json +++ b/packages/viewer/package.json @@ -29,6 +29,7 @@ "three": "^0.183" }, "dependencies": { + "polygon-clipping": "^0.15.7", "zustand": "^5" }, "devDependencies": { diff --git a/packages/viewer/src/components/viewer/ground-occluder.tsx b/packages/viewer/src/components/viewer/ground-occluder.tsx new file mode 100644 index 00000000..91ffa83c --- /dev/null +++ b/packages/viewer/src/components/viewer/ground-occluder.tsx @@ -0,0 +1,70 @@ +import { useScene } from '@pascal-app/core' +import { useMemo } from 'react' +import * as THREE from 'three' +import useViewer from '../../store/use-viewer' +import polygonClipping from 'polygon-clipping' + +export const GroundOccluder = () => { + const theme = useViewer((state) => state.theme) + const bgColor = theme === 'dark' ? '#1f2433' : '#fafafa' + + const nodes = useScene((state) => state.nodes) + + const shape = useMemo(() => { + const s = new THREE.Shape() + const size = 100000 + // Create outer infinite plane + s.moveTo(-size, -size) + s.lineTo(size, -size) + s.lineTo(size, size) + s.lineTo(-size, size) + s.closePath() + + // Collect all polygons for slabs and zones + const polygons: [number, number][][] = [] + + Object.values(nodes).forEach((node) => { + if ((node.type === 'slab' || node.type === 'zone') && node.polygon && node.polygon.length >= 3) { + polygons.push(node.polygon as [number, number][]) + } + }) + + if (polygons.length > 0) { + // Format for polygon-clipping: [[[x, y], [x, y], ...]] + const multiPolygons = polygons.map(pts => { + const ring = pts.map(p => [p[0], -p[1]] as [number, number]) // Negate Y (which was Z) + return [ring] + }) + + // Union all polygons together to prevent artifacts from overlapping + const unionedPolygons = polygonClipping.union(multiPolygons[0]!, ...multiPolygons.slice(1)) + + // Add each resulting unioned polygon as a hole + for (const geom of unionedPolygons) { + // First ring in each geometry is the exterior ring + if (geom.length > 0) { + const ring = geom[0]! + const hole = new THREE.Path() + + if (ring.length > 0) { + hole.moveTo(ring[0]![0], ring[0]![1]) + for (let i = 1; i < ring.length; i++) { + hole.lineTo(ring[i]![0], ring[i]![1]) + } + hole.closePath() + s.holes.push(hole) + } + } + } + } + + return s + }, [nodes]) + + return ( + + + + + ) +} diff --git a/packages/viewer/src/components/viewer/index.tsx b/packages/viewer/src/components/viewer/index.tsx index 7f23decc..2b144668 100644 --- a/packages/viewer/src/components/viewer/index.tsx +++ b/packages/viewer/src/components/viewer/index.tsx @@ -1,22 +1,57 @@ 'use client' -import { CeilingSystem, DoorSystem, ItemSystem, RoofSystem, SlabSystem, WallSystem, WindowSystem } from '@pascal-app/core' +import { + CeilingSystem, + DoorSystem, + ItemSystem, + RoofSystem, + SlabSystem, + WallSystem, + WindowSystem, +} from '@pascal-app/core' import { Bvh } from '@react-three/drei' -import { Canvas, extend, type ThreeToJSXElements } from '@react-three/fiber' +import { Canvas, extend, type ThreeToJSXElements, useFrame } from '@react-three/fiber' +import { useEffect, useMemo, useRef } from 'react' import * as THREE from 'three/webgpu' +import useViewer from '../../store/use-viewer' import { GuideSystem } from '../../systems/guide/guide-system' import { LevelSystem } from '../../systems/level/level-system' import { ScanSystem } from '../../systems/scan/scan-system' import { WallCutout } from '../../systems/wall/wall-cutout' import { ZoneSystem } from '../../systems/zone/zone-system' import { SceneRenderer } from '../renderers/scene-renderer' +import { GroundOccluder } from './ground-occluder' import { Lights } from './lights' import PostProcessing from './post-processing' import { SelectionManager } from './selection-manager' import { ViewerCamera } from './viewer-camera' -import { useEffect } from 'react' -import useViewer from '../../store/use-viewer' +function AnimatedBackground({ isDark }: { isDark: boolean }) { + const targetColor = useMemo(() => new THREE.Color(), []) + const initialized = useRef(false) + + useFrame(({ scene }, delta) => { + const dt = Math.min(delta, 0.1) * 4 + const targetHex = isDark ? '#1f2433' : '#ffffff' + + if (!scene.background || !(scene.background instanceof THREE.Color)) { + scene.background = new THREE.Color(targetHex) + initialized.current = true + return + } + + if (!initialized.current) { + scene.background.set(targetHex) + initialized.current = true + return + } + + targetColor.set(targetHex) + scene.background.lerp(targetColor, dt) + }) + + return null +} declare module '@react-three/fiber' { interface ThreeElements extends ThreeToJSXElements {} @@ -30,8 +65,15 @@ interface ViewerProps { isEditor?: boolean } -const Viewer: React.FC = ({ children, selectionManager = 'default', isEditor = false }) => { +const Viewer: React.FC = ({ + children, + selectionManager = 'default', + isEditor = false, +}) => { const setIsEditor = useViewer((state) => state.setIsEditor) + const theme = useViewer((state) => state.theme) + + const bgColor = theme === 'dark' ? '#1f2433' : '#fafafa' useEffect(() => { setIsEditor(isEditor) @@ -40,7 +82,7 @@ const Viewer: React.FC = ({ children, selectionManager = 'default', return ( { const renderer = new THREE.WebGPURenderer(props as any) renderer.toneMapping = THREE.ACESFilmicToneMapping @@ -53,7 +95,8 @@ const Viewer: React.FC = ({ children, selectionManager = 'default', }} camera={{ position: [50, 50, 50], fov: 50 }} > - + + {/* (null) + const theme = useViewer((state) => state.theme) + const isDark = theme === 'dark' + + const light1Ref = useRef(null) const shadowCamera = useRef(null) const shadowCameraSize = 50 // The "area" around the camera to shadow - // useHelper(lightRef, DirectionalLightHelper, 1, 'red') - // useHelper(shadowCamera, CameraHelper) + const light2Ref = useRef(null) + const light3Ref = useRef(null) + const ambientRef = useRef(null) + + const initialized = useRef(false) + + const targets = useMemo(() => ({ + l1Color: new THREE.Color(), + l2Color: new THREE.Color(), + l3Color: new THREE.Color(), + ambColor: new THREE.Color(), + }), []) + + useFrame((_, delta) => { + // clamp delta to avoid huge jumps on tab switch + const dt = Math.min(delta, 0.1) * 4 + + if (!initialized.current) { + if (light1Ref.current) { + light1Ref.current.intensity = isDark ? 0.8 : 4 + light1Ref.current.color.set(isDark ? '#e0e5ff' : '#ffffff') + // @ts-ignore + if (light1Ref.current.shadow) light1Ref.current.shadow.intensity = isDark ? 0.8 : 0.4 + } + if (light2Ref.current) { + light2Ref.current.intensity = isDark ? 0.2 : 0.75 + light2Ref.current.color.set(isDark ? '#8090ff' : '#ffffff') + } + if (light3Ref.current) { + light3Ref.current.intensity = isDark ? 0.3 : 1 + light3Ref.current.color.set(isDark ? '#a0b0ff' : '#ffffff') + } + if (ambientRef.current) { + ambientRef.current.intensity = isDark ? 0.15 : 0.5 + ambientRef.current.color.set(isDark ? '#a0b0ff' : '#ffffff') + } + initialized.current = true + return + } + + if (light1Ref.current) { + light1Ref.current.intensity = THREE.MathUtils.lerp(light1Ref.current.intensity, isDark ? 0.8 : 4, dt) + targets.l1Color.set(isDark ? '#e0e5ff' : '#ffffff') + light1Ref.current.color.lerp(targets.l1Color, dt) + + if (light1Ref.current.shadow) { + // @ts-ignore + if (light1Ref.current.shadow.intensity !== undefined) { + // @ts-ignore + light1Ref.current.shadow.intensity = THREE.MathUtils.lerp(light1Ref.current.shadow.intensity, isDark ? 0.8 : 0.4, dt) + } + } + } + + if (light2Ref.current) { + light2Ref.current.intensity = THREE.MathUtils.lerp(light2Ref.current.intensity, isDark ? 0.2 : 0.75, dt) + targets.l2Color.set(isDark ? '#8090ff' : '#ffffff') + light2Ref.current.color.lerp(targets.l2Color, dt) + } + + if (light3Ref.current) { + light3Ref.current.intensity = THREE.MathUtils.lerp(light3Ref.current.intensity, isDark ? 0.3 : 1, dt) + targets.l3Color.set(isDark ? '#a0b0ff' : '#ffffff') + light3Ref.current.color.lerp(targets.l3Color, dt) + } + + if (ambientRef.current) { + ambientRef.current.intensity = THREE.MathUtils.lerp(ambientRef.current.intensity, isDark ? 0.15 : 0.5, dt) + targets.ambColor.set(isDark ? '#a0b0ff' : '#ffffff') + ambientRef.current.color.lerp(targets.ambColor, dt) + } + }) return ( <> - - {/* */} + ) } diff --git a/packages/viewer/src/store/use-viewer.ts b/packages/viewer/src/store/use-viewer.ts index e10beb1c..21603975 100644 --- a/packages/viewer/src/store/use-viewer.ts +++ b/packages/viewer/src/store/use-viewer.ts @@ -35,6 +35,9 @@ type ViewerState = { cameraMode: 'perspective' | 'orthographic' setCameraMode: (mode: 'perspective' | 'orthographic') => void + theme: 'light' | 'dark' + setTheme: (theme: 'light' | 'dark') => void + levelMode: 'stacked' | 'exploded' | 'solo' | 'manual' setLevelMode: (mode: 'stacked' | 'exploded' | 'solo' | 'manual') => void @@ -47,9 +50,12 @@ type ViewerState = { showGuides: boolean setShowGuides: (show: boolean) => void + showGrid: boolean + setShowGrid: (show: boolean) => void + projectId: string | null setProjectId: (id: string | null) => void - projectPreferences: Record + projectPreferences: Record // Smart selection update setSelection: (updates: Partial) => void @@ -77,6 +83,9 @@ const useViewer = create()( cameraMode: "perspective", setCameraMode: (mode) => set({ cameraMode: mode }), + theme: "light", + setTheme: (theme) => set({ theme }), + levelMode: "stacked", setLevelMode: (mode) => set({ levelMode: mode }), @@ -109,6 +118,19 @@ const useViewer = create()( return { showGuides: show, projectPreferences }; }), + showGrid: true, + setShowGrid: (show) => + set((state) => { + const projectPreferences = { ...(state.projectPreferences || {}) }; + if (state.projectId) { + projectPreferences[state.projectId] = { + ...(projectPreferences[state.projectId] || {}), + showGrid: show, + }; + } + return { showGrid: show, projectPreferences }; + }), + projectId: null, setProjectId: (id) => set((state) => { @@ -118,6 +140,7 @@ const useViewer = create()( projectId: id, showScans: prefs.showScans ?? true, showGuides: prefs.showGuides ?? true, + showGrid: prefs.showGrid ?? true, }; }), projectPreferences: {}, @@ -165,6 +188,7 @@ const useViewer = create()( name: 'viewer-preferences', partialize: (state) => ({ cameraMode: state.cameraMode, + theme: state.theme, levelMode: state.levelMode, wallMode: state.wallMode, projectPreferences: state.projectPreferences, diff --git a/supabase/migrations/20260227200237_brown_quasimodo.sql b/supabase/migrations/20260227200237_brown_quasimodo.sql new file mode 100644 index 00000000..029b9893 --- /dev/null +++ b/supabase/migrations/20260227200237_brown_quasimodo.sql @@ -0,0 +1 @@ +ALTER TABLE "projects" ADD COLUMN "is_empty" boolean DEFAULT true NOT NULL; \ No newline at end of file diff --git a/supabase/migrations/20260227204328_backfill_empty_projects.sql b/supabase/migrations/20260227204328_backfill_empty_projects.sql new file mode 100644 index 00000000..84415986 --- /dev/null +++ b/supabase/migrations/20260227204328_backfill_empty_projects.sql @@ -0,0 +1,38 @@ +-- Backfill script to update the is_empty flag for existing projects +-- This can be run multiple times safely as logic evolves + +UPDATE projects p +SET is_empty = false +FROM ( + -- 1. Get the latest model for each project + SELECT DISTINCT ON (project_id) project_id, scene_graph + FROM projects_models + WHERE deleted_at IS NULL + ORDER BY project_id, version DESC, created_at DESC +) latest_model +WHERE p.id = latest_model.project_id +AND p.is_empty = true -- Only process projects that are currently marked empty +AND latest_model.scene_graph IS NOT NULL +AND latest_model.scene_graph->'nodes' IS NOT NULL +AND ( + -- Condition 1: More than 3 nodes + (SELECT count(*) FROM jsonb_object_keys(latest_model.scene_graph->'nodes')) > 3 + + OR + + -- Condition 2 & 3: Iterate through nodes to check type and children + EXISTS ( + SELECT 1 + FROM jsonb_each(latest_model.scene_graph->'nodes') AS n(key, value) + WHERE + -- Not a default node type + (n.value->>'type' NOT IN ('site', 'building', 'level')) + OR + -- Or is a level node with > 0 children + ( + n.value->>'type' = 'level' + AND jsonb_typeof(n.value->'children') = 'array' + AND jsonb_array_length(n.value->'children') > 0 + ) + ) +); \ No newline at end of file diff --git a/supabase/migrations/meta/20260227200237_snapshot.json b/supabase/migrations/meta/20260227200237_snapshot.json new file mode 100644 index 00000000..82203ee1 --- /dev/null +++ b/supabase/migrations/meta/20260227200237_snapshot.json @@ -0,0 +1,1135 @@ +{ + "id": "1e54bffc-eb81-4d5f-b2f7-0f006e46e939", + "prevId": "62f78c14-f7f8-423a-be0f-c712160251f3", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.auth_accounts": { + "name": "auth_accounts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "provider_id": { + "name": "provider_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "account_id": { + "name": "account_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "password": { + "name": "password", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "access_token": { + "name": "access_token", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "refresh_token": { + "name": "refresh_token", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "id_token": { + "name": "id_token", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "access_token_expires_at": { + "name": "access_token_expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "refresh_token_expires_at": { + "name": "refresh_token_expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "scope": { + "name": "scope", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "auth_accounts_user_id_auth_users_id_fk": { + "name": "auth_accounts_user_id_auth_users_id_fk", + "tableFrom": "auth_accounts", + "tableTo": "auth_users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": true + }, + "public.auth_jwks": { + "name": "auth_jwks", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "public_key": { + "name": "public_key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "private_key": { + "name": "private_key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": true + }, + "public.auth_sessions": { + "name": "auth_sessions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "token": { + "name": "token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "ip_address": { + "name": "ip_address", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "user_agent": { + "name": "user_agent", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "active_project_id": { + "name": "active_project_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "impersonated_by": { + "name": "impersonated_by", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "auth_sessions_user_id_auth_users_id_fk": { + "name": "auth_sessions_user_id_auth_users_id_fk", + "tableFrom": "auth_sessions", + "tableTo": "auth_users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "auth_sessions_impersonated_by_auth_users_id_fk": { + "name": "auth_sessions_impersonated_by_auth_users_id_fk", + "tableFrom": "auth_sessions", + "tableTo": "auth_users", + "columnsFrom": [ + "impersonated_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": true + }, + "public.auth_users": { + "name": "auth_users", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "email_verified": { + "name": "email_verified", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "image": { + "name": "image", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "github_url": { + "name": "github_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "x_url": { + "name": "x_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "youtube_url": { + "name": "youtube_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "email_notifications": { + "name": "email_notifications", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "role": { + "name": "role", + "type": "auth_user_roles", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'user'" + }, + "banned": { + "name": "banned", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "ban_reason": { + "name": "ban_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "ban_expires": { + "name": "ban_expires", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "email_unique_index": { + "name": "email_unique_index", + "columns": [ + { + "expression": "lower(\"email\")", + "asc": true, + "isExpression": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "username_unique_index": { + "name": "username_unique_index", + "columns": [ + { + "expression": "lower(\"username\")", + "asc": true, + "isExpression": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": true + }, + "public.auth_verifications": { + "name": "auth_verifications", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "value": { + "name": "value", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "identifier": { + "name": "identifier", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "verification_identifier_index": { + "name": "verification_identifier_index", + "columns": [ + { + "expression": "identifier", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": true + }, + "public.feedback": { + "name": "feedback", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "project_id": { + "name": "project_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "message": { + "name": "message", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "images": { + "name": "images", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "scene_graph": { + "name": "scene_graph", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": true + }, + "public.projects_addresses": { + "name": "projects_addresses", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "street_number": { + "name": "street_number", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "route": { + "name": "route", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "route_short": { + "name": "route_short", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "neighborhood": { + "name": "neighborhood", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "city": { + "name": "city", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "county": { + "name": "county", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "state": { + "name": "state", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "state_long": { + "name": "state_long", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "postal_code": { + "name": "postal_code", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "postal_code_suffix": { + "name": "postal_code_suffix", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "country": { + "name": "country", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "country_long": { + "name": "country_long", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "latitude": { + "name": "latitude", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "longitude": { + "name": "longitude", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "raw_json": { + "name": "raw_json", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "address_components_unique": { + "name": "address_components_unique", + "nullsNotDistinct": false, + "columns": [ + "street_number", + "route", + "city", + "state", + "postal_code" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": true + }, + "public.project_assets": { + "name": "project_assets", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "project_id": { + "name": "project_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "storage_key": { + "name": "storage_key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "url": { + "name": "url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "original_name": { + "name": "original_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "mime_type": { + "name": "mime_type", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "project_assets_project_id_projects_id_fk": { + "name": "project_assets_project_id_projects_id_fk", + "tableFrom": "project_assets", + "tableTo": "projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": true + }, + "public.projects_likes": { + "name": "projects_likes", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "project_id": { + "name": "project_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "projects_likes_project_id_projects_id_fk": { + "name": "projects_likes_project_id_projects_id_fk", + "tableFrom": "projects_likes", + "tableTo": "projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "projects_likes_project_user_unique": { + "name": "projects_likes_project_user_unique", + "nullsNotDistinct": false, + "columns": [ + "project_id", + "user_id" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": true + }, + "public.projects_models": { + "name": "projects_models", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "version": { + "name": "version", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 1 + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "draft": { + "name": "draft", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "project_id": { + "name": "project_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "scene_graph": { + "name": "scene_graph", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "metadata": { + "name": "metadata", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "projects_models_project_id_projects_id_fk": { + "name": "projects_models_project_id_projects_id_fk", + "tableFrom": "projects_models", + "tableTo": "projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": true + }, + "public.projects": { + "name": "projects", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "address_id": { + "name": "address_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "owner_id": { + "name": "owner_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "details_json": { + "name": "details_json", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "metadata": { + "name": "metadata", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "is_private": { + "name": "is_private", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "is_empty": { + "name": "is_empty", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "show_scans_public": { + "name": "show_scans_public", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "show_guides_public": { + "name": "show_guides_public", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "views": { + "name": "views", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "likes": { + "name": "likes", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "thumbnail_url": { + "name": "thumbnail_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "project_address_idx": { + "name": "project_address_idx", + "columns": [ + { + "expression": "address_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "project_owner_idx": { + "name": "project_owner_idx", + "columns": [ + { + "expression": "owner_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "project_is_private_idx": { + "name": "project_is_private_idx", + "columns": [ + { + "expression": "is_private", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "project_views_idx": { + "name": "project_views_idx", + "columns": [ + { + "expression": "views", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "project_likes_idx": { + "name": "project_likes_idx", + "columns": [ + { + "expression": "likes", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "projects_address_id_projects_addresses_id_fk": { + "name": "projects_address_id_projects_addresses_id_fk", + "tableFrom": "projects", + "tableTo": "projects_addresses", + "columnsFrom": [ + "address_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "projects_owner_id_auth_users_id_fk": { + "name": "projects_owner_id_auth_users_id_fk", + "tableFrom": "projects", + "tableTo": "auth_users", + "columnsFrom": [ + "owner_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": true + } + }, + "enums": { + "public.auth_user_roles": { + "name": "auth_user_roles", + "schema": "public", + "values": [ + "user", + "admin" + ] + } + }, + "schemas": {}, + "sequences": {}, + "roles": {}, + "policies": {}, + "views": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} \ No newline at end of file diff --git a/supabase/migrations/meta/20260227204328_snapshot.json b/supabase/migrations/meta/20260227204328_snapshot.json new file mode 100644 index 00000000..9b5367ca --- /dev/null +++ b/supabase/migrations/meta/20260227204328_snapshot.json @@ -0,0 +1,1135 @@ +{ + "id": "b7bcfd85-59f4-4979-aa8c-69dcb20c4b32", + "prevId": "1e54bffc-eb81-4d5f-b2f7-0f006e46e939", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.auth_accounts": { + "name": "auth_accounts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "provider_id": { + "name": "provider_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "account_id": { + "name": "account_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "password": { + "name": "password", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "access_token": { + "name": "access_token", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "refresh_token": { + "name": "refresh_token", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "id_token": { + "name": "id_token", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "access_token_expires_at": { + "name": "access_token_expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "refresh_token_expires_at": { + "name": "refresh_token_expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "scope": { + "name": "scope", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "auth_accounts_user_id_auth_users_id_fk": { + "name": "auth_accounts_user_id_auth_users_id_fk", + "tableFrom": "auth_accounts", + "columnsFrom": [ + "user_id" + ], + "tableTo": "auth_users", + "columnsTo": [ + "id" + ], + "onUpdate": "no action", + "onDelete": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": true + }, + "public.auth_jwks": { + "name": "auth_jwks", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "public_key": { + "name": "public_key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "private_key": { + "name": "private_key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": true + }, + "public.auth_sessions": { + "name": "auth_sessions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "token": { + "name": "token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "ip_address": { + "name": "ip_address", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "user_agent": { + "name": "user_agent", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "active_project_id": { + "name": "active_project_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "impersonated_by": { + "name": "impersonated_by", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "auth_sessions_user_id_auth_users_id_fk": { + "name": "auth_sessions_user_id_auth_users_id_fk", + "tableFrom": "auth_sessions", + "columnsFrom": [ + "user_id" + ], + "tableTo": "auth_users", + "columnsTo": [ + "id" + ], + "onUpdate": "no action", + "onDelete": "cascade" + }, + "auth_sessions_impersonated_by_auth_users_id_fk": { + "name": "auth_sessions_impersonated_by_auth_users_id_fk", + "tableFrom": "auth_sessions", + "columnsFrom": [ + "impersonated_by" + ], + "tableTo": "auth_users", + "columnsTo": [ + "id" + ], + "onUpdate": "no action", + "onDelete": "set null" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": true + }, + "public.auth_users": { + "name": "auth_users", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "email_verified": { + "name": "email_verified", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "image": { + "name": "image", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "github_url": { + "name": "github_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "x_url": { + "name": "x_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "youtube_url": { + "name": "youtube_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "email_notifications": { + "name": "email_notifications", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "role": { + "name": "role", + "type": "auth_user_roles", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'user'" + }, + "banned": { + "name": "banned", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "ban_reason": { + "name": "ban_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "ban_expires": { + "name": "ban_expires", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "email_unique_index": { + "name": "email_unique_index", + "columns": [ + { + "expression": "lower(\"email\")", + "isExpression": true, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "with": {}, + "method": "btree", + "concurrently": false + }, + "username_unique_index": { + "name": "username_unique_index", + "columns": [ + { + "expression": "lower(\"username\")", + "isExpression": true, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "with": {}, + "method": "btree", + "concurrently": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": true + }, + "public.auth_verifications": { + "name": "auth_verifications", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "value": { + "name": "value", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "identifier": { + "name": "identifier", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "verification_identifier_index": { + "name": "verification_identifier_index", + "columns": [ + { + "expression": "identifier", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "with": {}, + "method": "btree", + "concurrently": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": true + }, + "public.feedback": { + "name": "feedback", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "project_id": { + "name": "project_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "message": { + "name": "message", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "images": { + "name": "images", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "scene_graph": { + "name": "scene_graph", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": true + }, + "public.projects_addresses": { + "name": "projects_addresses", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "street_number": { + "name": "street_number", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "route": { + "name": "route", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "route_short": { + "name": "route_short", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "neighborhood": { + "name": "neighborhood", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "city": { + "name": "city", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "county": { + "name": "county", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "state": { + "name": "state", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "state_long": { + "name": "state_long", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "postal_code": { + "name": "postal_code", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "postal_code_suffix": { + "name": "postal_code_suffix", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "country": { + "name": "country", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "country_long": { + "name": "country_long", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "latitude": { + "name": "latitude", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "longitude": { + "name": "longitude", + "type": "numeric", + "primaryKey": false, + "notNull": false + }, + "raw_json": { + "name": "raw_json", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "address_components_unique": { + "name": "address_components_unique", + "columns": [ + "street_number", + "route", + "city", + "state", + "postal_code" + ], + "nullsNotDistinct": false + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": true + }, + "public.project_assets": { + "name": "project_assets", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "project_id": { + "name": "project_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "storage_key": { + "name": "storage_key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "url": { + "name": "url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "original_name": { + "name": "original_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "mime_type": { + "name": "mime_type", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "project_assets_project_id_projects_id_fk": { + "name": "project_assets_project_id_projects_id_fk", + "tableFrom": "project_assets", + "columnsFrom": [ + "project_id" + ], + "tableTo": "projects", + "columnsTo": [ + "id" + ], + "onUpdate": "no action", + "onDelete": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": true + }, + "public.projects_likes": { + "name": "projects_likes", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "project_id": { + "name": "project_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "projects_likes_project_id_projects_id_fk": { + "name": "projects_likes_project_id_projects_id_fk", + "tableFrom": "projects_likes", + "columnsFrom": [ + "project_id" + ], + "tableTo": "projects", + "columnsTo": [ + "id" + ], + "onUpdate": "no action", + "onDelete": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "projects_likes_project_user_unique": { + "name": "projects_likes_project_user_unique", + "columns": [ + "project_id", + "user_id" + ], + "nullsNotDistinct": false + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": true + }, + "public.projects_models": { + "name": "projects_models", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "version": { + "name": "version", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 1 + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "draft": { + "name": "draft", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "project_id": { + "name": "project_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "scene_graph": { + "name": "scene_graph", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "metadata": { + "name": "metadata", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "projects_models_project_id_projects_id_fk": { + "name": "projects_models_project_id_projects_id_fk", + "tableFrom": "projects_models", + "columnsFrom": [ + "project_id" + ], + "tableTo": "projects", + "columnsTo": [ + "id" + ], + "onUpdate": "no action", + "onDelete": "set null" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": true + }, + "public.projects": { + "name": "projects", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "address_id": { + "name": "address_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "owner_id": { + "name": "owner_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "details_json": { + "name": "details_json", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "metadata": { + "name": "metadata", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "is_private": { + "name": "is_private", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "is_empty": { + "name": "is_empty", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "show_scans_public": { + "name": "show_scans_public", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "show_guides_public": { + "name": "show_guides_public", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "views": { + "name": "views", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "likes": { + "name": "likes", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "thumbnail_url": { + "name": "thumbnail_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "project_address_idx": { + "name": "project_address_idx", + "columns": [ + { + "expression": "address_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "with": {}, + "method": "btree", + "concurrently": false + }, + "project_owner_idx": { + "name": "project_owner_idx", + "columns": [ + { + "expression": "owner_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "with": {}, + "method": "btree", + "concurrently": false + }, + "project_is_private_idx": { + "name": "project_is_private_idx", + "columns": [ + { + "expression": "is_private", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "with": {}, + "method": "btree", + "concurrently": false + }, + "project_views_idx": { + "name": "project_views_idx", + "columns": [ + { + "expression": "views", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "with": {}, + "method": "btree", + "concurrently": false + }, + "project_likes_idx": { + "name": "project_likes_idx", + "columns": [ + { + "expression": "likes", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "with": {}, + "method": "btree", + "concurrently": false + } + }, + "foreignKeys": { + "projects_address_id_projects_addresses_id_fk": { + "name": "projects_address_id_projects_addresses_id_fk", + "tableFrom": "projects", + "columnsFrom": [ + "address_id" + ], + "tableTo": "projects_addresses", + "columnsTo": [ + "id" + ], + "onUpdate": "no action", + "onDelete": "set null" + }, + "projects_owner_id_auth_users_id_fk": { + "name": "projects_owner_id_auth_users_id_fk", + "tableFrom": "projects", + "columnsFrom": [ + "owner_id" + ], + "tableTo": "auth_users", + "columnsTo": [ + "id" + ], + "onUpdate": "no action", + "onDelete": "set null" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": true + } + }, + "enums": { + "public.auth_user_roles": { + "name": "auth_user_roles", + "schema": "public", + "values": [ + "user", + "admin" + ] + } + }, + "schemas": {}, + "views": {}, + "sequences": {}, + "roles": {}, + "policies": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} \ No newline at end of file diff --git a/supabase/migrations/meta/_journal.json b/supabase/migrations/meta/_journal.json index 52458a45..4b2e3583 100644 --- a/supabase/migrations/meta/_journal.json +++ b/supabase/migrations/meta/_journal.json @@ -50,6 +50,20 @@ "when": 1772216042000, "tag": "20260227173402_create_missing_storage_buckets", "breakpoints": true + }, + { + "idx": 7, + "version": "7", + "when": 1772222557281, + "tag": "20260227200237_brown_quasimodo", + "breakpoints": true + }, + { + "idx": 8, + "version": "7", + "when": 1772225008787, + "tag": "20260227204328_backfill_empty_projects", + "breakpoints": true } ] } \ No newline at end of file