refactor: index ViewField by viewId and key (#1416)
* refactor: index ViewField by viewId and key Closes #1413 * refactor: rename ViewField properties
This commit is contained in:
@ -0,0 +1,18 @@
|
||||
/*
|
||||
Warnings:
|
||||
|
||||
- The primary key for the `viewFields` table will be changed. If it partially fails, the table could be left without primary key constraint.
|
||||
- You are about to drop the column `id` on the `viewFields` table. All the data in the column will be lost.
|
||||
- Added the required column `key` to the `viewFields` table without a default value. This is not possible if the table is not empty.
|
||||
- Made the column `viewId` on table `viewFields` required. This step will fail if there are existing NULL values in that column.
|
||||
|
||||
*/
|
||||
-- DropIndex
|
||||
DROP INDEX "viewFields_workspaceId_viewId_objectName_fieldName_key";
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE "viewFields" DROP CONSTRAINT "viewFields_pkey",
|
||||
DROP COLUMN "id",
|
||||
ADD COLUMN "key" TEXT NOT NULL,
|
||||
ALTER COLUMN "viewId" SET NOT NULL,
|
||||
ADD CONSTRAINT "viewFields_pkey" PRIMARY KEY ("viewId", "key");
|
||||
@ -0,0 +1,4 @@
|
||||
-- AlterTable
|
||||
ALTER TABLE "viewFields" RENAME COLUMN "fieldName" TO "name";
|
||||
ALTER TABLE "viewFields" RENAME COLUMN "objectName" TO "objectId";
|
||||
ALTER TABLE "viewFields" RENAME COLUMN "sizeInPx" TO "size";
|
||||
@ -657,24 +657,21 @@ model ViewSort {
|
||||
}
|
||||
|
||||
model ViewField {
|
||||
/// @Validator.IsString()
|
||||
/// @Validator.IsOptional()
|
||||
id String @id @default(uuid())
|
||||
index Int
|
||||
isVisible Boolean
|
||||
key String
|
||||
name String
|
||||
objectId String
|
||||
size Int
|
||||
|
||||
fieldName String
|
||||
index Int
|
||||
isVisible Boolean
|
||||
objectName String
|
||||
sizeInPx Int
|
||||
|
||||
view View? @relation(fields: [viewId], references: [id], onDelete: Cascade)
|
||||
viewId String?
|
||||
view View @relation(fields: [viewId], references: [id], onDelete: Cascade)
|
||||
viewId String
|
||||
|
||||
/// @TypeGraphQL.omit(input: true, output: true)
|
||||
workspace Workspace @relation(fields: [workspaceId], references: [id])
|
||||
/// @TypeGraphQL.omit(input: true, output: true)
|
||||
workspaceId String
|
||||
|
||||
@@unique([workspaceId, viewId, objectName, fieldName])
|
||||
@@id([viewId, key])
|
||||
@@map("viewFields")
|
||||
}
|
||||
|
||||
@ -20,73 +20,54 @@ export const seedViews = async (prisma: PrismaClient) => {
|
||||
await Promise.all(
|
||||
[
|
||||
{
|
||||
id: 'twenty-388833ba-1343-49d7-9092-065f92e0e5fa',
|
||||
fieldName: 'Name',
|
||||
sizeInPx: 180,
|
||||
isVisible: true,
|
||||
key: 'name',
|
||||
name: 'Name',
|
||||
size: 180,
|
||||
},
|
||||
{
|
||||
id: 'twenty-fdbb7a60-18ac-4d52-83b8-399eb6055ec6',
|
||||
fieldName: 'URL',
|
||||
sizeInPx: 100,
|
||||
isVisible: true,
|
||||
key: 'domainName',
|
||||
name: 'URL',
|
||||
size: 100,
|
||||
},
|
||||
{
|
||||
id: 'twenty-cc77beef-af99-4cd2-86dd-0230f8565ed5',
|
||||
fieldName: 'Account Owner',
|
||||
sizeInPx: 150,
|
||||
isVisible: true,
|
||||
key: 'accountOwner',
|
||||
name: 'Account Owner',
|
||||
size: 150,
|
||||
},
|
||||
{
|
||||
id: 'twenty-28537b67-8b78-4885-903d-f749f34883b1',
|
||||
fieldName: 'Creation',
|
||||
sizeInPx: 150,
|
||||
isVisible: true,
|
||||
key: 'createdAt',
|
||||
name: 'Creation',
|
||||
size: 150,
|
||||
},
|
||||
{
|
||||
id: 'twenty-59e6624d-9a4d-492d-a0f2-52f51f69d004',
|
||||
fieldName: 'Employees',
|
||||
sizeInPx: 150,
|
||||
isVisible: true,
|
||||
key: 'employees',
|
||||
name: 'Employees',
|
||||
size: 150,
|
||||
},
|
||||
{
|
||||
id: 'twenty-2c4ee8b9-aacd-42dd-b422-22eca03aab5a',
|
||||
fieldName: 'LinkedIn',
|
||||
sizeInPx: 170,
|
||||
isVisible: true,
|
||||
key: 'linkedin',
|
||||
name: 'LinkedIn',
|
||||
size: 170,
|
||||
},
|
||||
{
|
||||
id: 'twenty-b83e299f-7098-4748-a39e-431cca2907ab',
|
||||
fieldName: 'Address',
|
||||
sizeInPx: 170,
|
||||
isVisible: true,
|
||||
key: 'address',
|
||||
name: 'Address',
|
||||
size: 170,
|
||||
},
|
||||
{
|
||||
id: 'twenty-acef1246-8461-4e34-96b9-f326d598d655',
|
||||
fieldName: 'ICP',
|
||||
sizeInPx: 150,
|
||||
isVisible: false,
|
||||
},
|
||||
{
|
||||
id: 'twenty-971828c5-8167-4997-ae13-3b7895faa6f2',
|
||||
fieldName: 'ARR',
|
||||
sizeInPx: 150,
|
||||
isVisible: true,
|
||||
},
|
||||
{
|
||||
id: 'twenty-90977d8a-328d-4f69-98e8-8c69723c5a18',
|
||||
fieldName: 'Twitter',
|
||||
sizeInPx: 150,
|
||||
isVisible: false,
|
||||
key: 'annualRecurringRevenue',
|
||||
name: 'ARR',
|
||||
size: 150,
|
||||
},
|
||||
].map((viewField, index) =>
|
||||
prisma.viewField.upsert({
|
||||
where: { id: viewField.id },
|
||||
where: { viewId_key: { key: viewField.key, viewId: companyViewId } },
|
||||
update: {},
|
||||
create: {
|
||||
...viewField,
|
||||
index: index + 1,
|
||||
objectName: 'company',
|
||||
index,
|
||||
isVisible: true,
|
||||
objectId: 'company',
|
||||
viewId: companyViewId,
|
||||
workspaceId,
|
||||
},
|
||||
@ -109,67 +90,59 @@ export const seedViews = async (prisma: PrismaClient) => {
|
||||
await Promise.all(
|
||||
[
|
||||
{
|
||||
id: 'twenty-fc3461b4-661d-492e-8907-61004a41cca6',
|
||||
fieldName: 'People',
|
||||
sizeInPx: 210,
|
||||
isVisible: true,
|
||||
key: 'displayName',
|
||||
name: 'People',
|
||||
size: 210,
|
||||
},
|
||||
{
|
||||
id: 'twenty-4724d413-4343-4528-b8c4-4431910722f8',
|
||||
fieldName: 'Email',
|
||||
sizeInPx: 150,
|
||||
isVisible: true,
|
||||
key: 'email',
|
||||
name: 'Email',
|
||||
size: 150,
|
||||
},
|
||||
{
|
||||
id: 'twenty-fbb16b08-5a58-4a69-8bd0-a6d267994042',
|
||||
fieldName: 'Company',
|
||||
sizeInPx: 150,
|
||||
isVisible: true,
|
||||
key: 'company',
|
||||
name: 'Company',
|
||||
size: 150,
|
||||
},
|
||||
{
|
||||
id: 'twenty-1bad57bb-6627-40f8-8c75-bb5902892273',
|
||||
fieldName: 'Phone',
|
||||
sizeInPx: 150,
|
||||
isVisible: true,
|
||||
key: 'phone',
|
||||
name: 'Phone',
|
||||
size: 150,
|
||||
},
|
||||
{
|
||||
id: 'twenty-3544d797-740b-4e0b-8226-134bf38da256',
|
||||
fieldName: 'Creation',
|
||||
sizeInPx: 150,
|
||||
isVisible: true,
|
||||
key: 'createdAt',
|
||||
name: 'Creation',
|
||||
size: 150,
|
||||
},
|
||||
{
|
||||
id: 'twenty-4b6d48fb-17e2-4071-8565-d512f84656d5',
|
||||
fieldName: 'City',
|
||||
sizeInPx: 150,
|
||||
isVisible: true,
|
||||
key: 'city',
|
||||
name: 'City',
|
||||
size: 150,
|
||||
},
|
||||
{
|
||||
id: 'twenty-418849cc-aa5c-4835-822b-c0dfb076106b',
|
||||
fieldName: 'Job title',
|
||||
sizeInPx: 150,
|
||||
isVisible: true,
|
||||
key: 'jobTitle',
|
||||
name: 'Job title',
|
||||
size: 150,
|
||||
},
|
||||
{
|
||||
id: 'twenty-7591af5d-e081-4afa-94bb-09bd0e517850',
|
||||
fieldName: 'LinkedIn',
|
||||
sizeInPx: 150,
|
||||
isVisible: true,
|
||||
key: 'linkedin',
|
||||
name: 'LinkedIn',
|
||||
size: 150,
|
||||
},
|
||||
{
|
||||
id: 'twenty-e7baeb3d-8ef3-4e61-89d6-60f64b1d52c5',
|
||||
fieldName: 'Twitter',
|
||||
sizeInPx: 150,
|
||||
isVisible: true,
|
||||
key: 'x',
|
||||
name: 'Twitter',
|
||||
size: 150,
|
||||
},
|
||||
].map((viewField, index) =>
|
||||
prisma.viewField.upsert({
|
||||
where: { id: viewField.id },
|
||||
where: { viewId_key: { key: viewField.key, viewId: personViewId } },
|
||||
update: {},
|
||||
create: {
|
||||
...viewField,
|
||||
index: index + 1,
|
||||
objectName: 'person',
|
||||
index,
|
||||
isVisible: true,
|
||||
objectId: 'person',
|
||||
viewId: personViewId,
|
||||
workspaceId,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user