feat: add HostedImage relation in Category table + data migration to HostedImage

This commit is contained in:
Dolu
2022-09-06 11:28:08 +02:00
parent 5e688466c0
commit 72e7eb2a25
5 changed files with 48 additions and 12 deletions

View File

@@ -122,7 +122,6 @@ export interface NexusGenObjects {
workplan: string; // String! workplan: string; // String!
} }
Category: { // root type Category: { // root type
cover_image?: string | null; // String
icon?: string | null; // String icon?: string | null; // String
id: number; // Int! id: number; // Int!
title: string; // String! title: string; // String!

View File

@@ -4,7 +4,8 @@ const {
extendType, extendType,
nonNull, nonNull,
} = require('nexus'); } = require('nexus');
const { prisma } = require('../../../prisma') const { prisma } = require('../../../prisma');
const resolveImgObjectToUrl = require('../../../utils/resolveImageUrl');
const Category = objectType({ const Category = objectType({
@@ -12,7 +13,17 @@ const Category = objectType({
definition(t) { definition(t) {
t.nonNull.int('id'); t.nonNull.int('id');
t.nonNull.string('title'); t.nonNull.string('title');
t.string('cover_image'); t.string('cover_image', {
async resolve(parent) {
const imgObject = await prisma.hostedImage.findUnique({
where: {
id: parent.cover_image_id
}
});
return resolveImgObjectToUrl(imgObject);
}
});
t.string('icon'); t.string('icon');

View File

@@ -0,0 +1,5 @@
-- AlterTable
ALTER TABLE "Category" ADD COLUMN "cover_image_id" INTEGER;
-- AddForeignKey
ALTER TABLE "Category" ADD CONSTRAINT "Category_cover_image_id_fkey" FOREIGN KEY ("cover_image_id") REFERENCES "HostedImage"("id") ON DELETE SET NULL ON UPDATE CASCADE;

View File

@@ -115,6 +115,8 @@ model Category {
id Int @id @default(autoincrement()) id Int @id @default(autoincrement())
title String title String
cover_image String? cover_image String?
cover_image_id Int?
cover_image_rel HostedImage? @relation("CategoryCoverImage", fields: [cover_image_id], references: [id])
icon String? icon String?
project Project[] project Project[]
@@ -287,6 +289,7 @@ model HostedImage {
ProjectThumbnail Project[] @relation("ProjectThumbnail") ProjectThumbnail Project[] @relation("ProjectThumbnail")
ProjectCoverImage Project[] @relation("ProjectCoverImage") ProjectCoverImage Project[] @relation("ProjectCoverImage")
CategoryCoverImage Category[] @relation("CategoryCoverImage")
} }
// ----------------- // -----------------

View File

@@ -118,6 +118,24 @@ async function migrateOldImages() {
}) })
} }
} }
/**
* Category
**/
const categories = await prisma.category.findMany({
select: {
id: true,
cover_image: true,
}
})
for (const category of categories) {
if (category.cover_image) {
let hostedImageId = await _insertInHostedImage(category.cover_image)
await _updateObjectWithHostedImageId(prisma.category, category.id, {
cover_image_id: hostedImageId,
})
}
}
} }
async function _insertInHostedImage(url){ async function _insertInHostedImage(url){