From e17653bbf21bc6201241c27a05fbb9c15effb273 Mon Sep 17 00:00:00 2001 From: Maria Sauer <mcs22@inf.ufpr.br> Date: Thu, 6 Mar 2025 11:04:46 -0300 Subject: [PATCH] Issue #52: create route publish resource --- src/db/schema/index.ts | 2 ++ src/db/schema/resource.schema.ts | 6 +++--- src/db/schema/resourceEnum.schema.ts | 8 ++++++++ src/routes/s3.route.ts | 1 + 4 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 src/db/schema/resourceEnum.schema.ts diff --git a/src/db/schema/index.ts b/src/db/schema/index.ts index d1e4393..574a14e 100644 --- a/src/db/schema/index.ts +++ b/src/db/schema/index.ts @@ -32,6 +32,7 @@ import actionTable from './action.schema' import notificationRelationTable from '../relations/notification.relation' import userItemRelationTable from '../relations/user-item.relation' import stateEnum from './stateEnum.schema' +import resourceEnum from './resourceEnum.schema' import commentsTable from './comments.schema' import commentReplyTable from './comment-reply.schema' import userCollectionTable from '../relations/user-collection.relation' @@ -73,6 +74,7 @@ export { commentsTable, commentReplyTable, userCollectionTable, + resourceEnum } export const tables = [ diff --git a/src/db/schema/resource.schema.ts b/src/db/schema/resource.schema.ts index de04ef3..dc86b4e 100644 --- a/src/db/schema/resource.schema.ts +++ b/src/db/schema/resource.schema.ts @@ -17,18 +17,18 @@ import userTable from './user.schema' import objectTypeTable from './object-type.schema' import licenseTable from './license.schema' import resourceStatsTable from './resource-stats.schema' +import resourceEnum from './resourceEnum.schema' //por padrao active é false, só é true quando o recurso é aprovado const resourceTable = pgTable('resources', { id: serial('id').primaryKey() .notNull() .unique(), + state: resourceEnum('state').notNull().default('draft'), name: varchar('name', { length: 255 }) .notNull(), author: varchar('author', { length: 255 }) .notNull(), - bucket_key: varchar('bucket_key', { length: 255 }) - .unique(), link: varchar('link', { length: 255 }), thumbnail: varchar('thumbnail', { length: 255 }) .notNull(), @@ -59,7 +59,7 @@ const resourceTable = pgTable('resources', { license_id: integer('license_id') .notNull() .references(() => licenseTable.id, { onDelete: 'cascade' }), - }) +}) export const resourceRelations = relations(resourceTable, ({ many }) => ({ diff --git a/src/db/schema/resourceEnum.schema.ts b/src/db/schema/resourceEnum.schema.ts new file mode 100644 index 0000000..df77bc6 --- /dev/null +++ b/src/db/schema/resourceEnum.schema.ts @@ -0,0 +1,8 @@ +import { pgEnum } from "drizzle-orm/pg-core"; +import { z } from "zod"; + +const resourceEnum = pgEnum('state',['draft', 'submitted', 'accepted']) +const resourceEnumSchema = z.enum(resourceEnum.enumValues) + +export default resourceEnum +export type ResourceEnum = z.infer<typeof resourceEnumSchema> \ No newline at end of file diff --git a/src/routes/s3.route.ts b/src/routes/s3.route.ts index 102489c..9c6e25c 100644 --- a/src/routes/s3.route.ts +++ b/src/routes/s3.route.ts @@ -242,6 +242,7 @@ export const s3Routes = new Hono() // O corpo da resposta é o arquivo, e seu tipo de conteúdo pode ser acessado diretamente const fileData = await response.Body.transformToByteArray()// Converte o conteúdo do corpo para ArrayBuffer ou outro formato adequado + return new Response(fileData, { status: 200, headers: { -- GitLab