diff --git a/packages/api/router/location/mutation.create.schema.ts b/packages/api/router/location/mutation.create.schema.ts index c6fe23fc5d..42e09dea81 100644 --- a/packages/api/router/location/mutation.create.schema.ts +++ b/packages/api/router/location/mutation.create.schema.ts @@ -1,6 +1,6 @@ import { z } from 'zod' -import { PrismaEnums } from '@weareinreach/db' +import * as PrismaEnums from '@weareinreach/db/enums' import { prefixedId } from '~api/schemas/idPrefix' export const ZCreateSchema = z.object({ diff --git a/packages/api/router/location/mutation.update.schema.ts b/packages/api/router/location/mutation.update.schema.ts index efd20bf98d..cff543847d 100644 --- a/packages/api/router/location/mutation.update.schema.ts +++ b/packages/api/router/location/mutation.update.schema.ts @@ -1,6 +1,7 @@ import { z } from 'zod' -import { Geometry, Prisma, PrismaEnums } from '@weareinreach/db' +import { Geometry, Prisma } from '@weareinreach/db' +import * as PrismaEnums from '@weareinreach/db/enums' import { allAttributes } from '@weareinreach/db/generated/allAttributes' import { prefixedId } from '~api/schemas/idPrefix' diff --git a/packages/db/enums/index.ts b/packages/db/enums/index.ts new file mode 100644 index 0000000000..698fd957eb --- /dev/null +++ b/packages/db/enums/index.ts @@ -0,0 +1,60 @@ +export enum AddressVisibility { + FULL = 'FULL', + PARTIAL = 'PARTIAL', + HIDDEN = 'HIDDEN', +} + +export enum AttributeRender { + COMMUNITY = 'COMMUNITY', + SERVICE = 'SERVICE', + LEADER = 'LEADER', + ATTRIBUTE = 'ATTRIBUTE', + LIST = 'LIST', +} + +export enum AttributeAttachment { + ORGANIZATION = 'ORGANIZATION', + LOCATION = 'LOCATION', + SERVICE = 'SERVICE', + USER = 'USER', +} + +export enum FilterType { + INCLUDE = 'INCLUDE', + EXCLUDE = 'EXCLUDE', +} + +export enum SourceType { + EXTERNAL = 'EXTERNAL', + ORGANIZATION = 'ORGANIZATION', + SYSTEM = 'SYSTEM', + USER = 'USER', +} + +export enum LocationAlertLevel { + INFO_PRIMARY = 'INFO_PRIMARY', + WARN_PRIMARY = 'WARN_PRIMARY', + CRITICAL_PRIMARY = 'CRITICAL_PRIMARY', + INFO_SECONDARY = 'INFO_SECONDARY', + WARN_SECONDARY = 'WARN_SECONDARY', + CRITICAL_SECONDARY = 'CRITICAL_SECONDARY', +} + +export enum InterpolationOptions { + PLURAL = 'PLURAL', + ORDINAL = 'ORDINAL', + CONTEXT = 'CONTEXT', +} + +export enum VisibilitySetting { + NONE = 'NONE', + LOGGED_IN = 'LOGGED_IN', + PROVIDER = 'PROVIDER', + PUBLIC = 'PUBLIC', +} + +export enum AuditTrailOperation { + INSERT = 'INSERT', + UPDATE = 'UPDATE', + DELETE = 'DELETE', +} diff --git a/packages/db/package.json b/packages/db/package.json index b7c85f7a52..1526cf59e9 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -12,7 +12,7 @@ "clean:zod": "rm -rf ./zod-schemas/* || true", "db:dataMigrate": "pnpm with-env tsx ./prisma/dataMigrationRunner.ts", "db:deploy": "pnpm with-env prisma migrate deploy", - "db:generate": "pnpm clean:zod && pnpm with-env prisma generate --generator client && prisma -v", + "db:generate": "pnpm clean:zod && pnpm with-env prisma generate --generator client --generator enum && prisma -v", "db:generate:aws": "pnpm with-env prisma generate --generator aws", "db:generate:kysely": "pnpm with-env kysely-codegen || true", "db:migrate": "pnpm with-env prisma migrate dev", @@ -105,6 +105,7 @@ "pretty-ms": "9.0.0", "prisma": "5.16.1", "prisma-dbml-generator": "0.12.0", + "prisma-generator-ts-enums": "1.1.0", "prisma-query-inspector": "1.4.4", "prisma-query-log": "3.2.0", "slugify": "1.6.6", diff --git a/packages/db/prisma/schema.prisma b/packages/db/prisma/schema.prisma index 23d1c89812..af31d24b22 100644 --- a/packages/db/prisma/schema.prisma +++ b/packages/db/prisma/schema.prisma @@ -9,6 +9,11 @@ generator aws { binaryTargets = ["linux-arm64-openssl-3.0.x"] } +generator enum { + provider = "node node_modules/prisma-generator-ts-enums" // specify the path to this generator here + output = "../enums/index.ts" // optionally, you can specify an output filename here -- default is ./types/enums.d.ts +} + // generator zod { // provider = "zod-prisma-types" // output = "../zod-schemas" diff --git a/packages/ui/components/data-portal/AddressDrawer.tsx b/packages/ui/components/data-portal/AddressDrawer.tsx index a966fb2288..a5f9ad0af0 100644 --- a/packages/ui/components/data-portal/AddressDrawer.tsx +++ b/packages/ui/components/data-portal/AddressDrawer.tsx @@ -27,6 +27,7 @@ import { z } from 'zod' import { type ApiOutput } from '@weareinreach/api' import { boolOrNull, transformNullString } from '@weareinreach/api/schemas/common' +import * as PrismaEnums from '@weareinreach/db/enums' import { Breadcrumb } from '~ui/components/core/Breadcrumb' import { Button } from '~ui/components/core/Button' import { isExternal, Link } from '~ui/components/core/Link' @@ -92,7 +93,7 @@ const FormSchema = z.object({ deleted: z.coerce.boolean(), countryId: z.string().nullable(), govDistId: z.string().nullable(), - addressVisibility: z.enum(['FULL', 'PARTIAL', 'HIDDEN']).default('FULL'), + addressVisibility: z.nativeEnum(PrismaEnums.AddressVisibility), accessible: z .object({ supplementId: z.string(), @@ -160,10 +161,10 @@ const CountryItem = forwardRef(({ label, flag, ...p }) CountryItem.displayName = 'CountryItem' -const addressVisibilityOptions: Record<'value' | 'label', string>[] = [ - { value: 'FULL', label: 'Show full address' }, - { value: 'PARTIAL', label: 'Show city & state/province' }, - { value: 'HIDDEN', label: 'Hide address' }, +const addressVisibilityOptions: { value: PrismaEnums.AddressVisibility; label: string }[] = [ + { value: PrismaEnums.AddressVisibility.FULL, label: 'Show full address' }, + { value: PrismaEnums.AddressVisibility.PARTIAL, label: 'Show city & state/province' }, + { value: PrismaEnums.AddressVisibility.HIDDEN, label: 'Hide address' }, ] const _AddressDrawer = forwardRef(({ locationId, ...props }, ref) => { @@ -196,6 +197,7 @@ const _AddressDrawer = forwardRef(({ loca }) useEffect(() => { if (data && !isLoading) { + // @ts-expect-error TODO: Wtf? form.setValues(data) form.resetDirty() setIsSaved(false) @@ -471,7 +473,7 @@ const _AddressDrawer = forwardRef(({ loca