Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 12 additions & 4 deletions apps/backend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
"@types/supertest": "^6.0.2",
"globals": "^15.14.0",
"jest": "^29.7.0",
"prisma": "^6.3.1",
"prisma": "^6.6.0",
"source-map-support": "^0.5.21",
"supertest": "^7.0.0",
"ts-jest": "^29.2.5",
Expand All @@ -63,14 +63,22 @@
"typescript": "^5.7.3"
},
"jest": {
"moduleFileExtensions": ["js", "json", "ts"],
"moduleFileExtensions": [
"js",
"json",
"ts"
],
"rootDir": "./",
"modulePaths": ["<rootDir>"],
"modulePaths": [
"<rootDir>"
],
"testRegex": ".*\\.spec\\.ts$",
"transform": {
"^.+\\.(t|j)s$": "ts-jest"
},
"collectCoverageFrom": ["**/*.(t|j)s"],
"collectCoverageFrom": [
"**/*.(t|j)s"
],
"coverageDirectory": "../coverage",
"testEnvironment": "node"
},
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
-- CreateTable
CREATE TABLE "messages" (
"id" TEXT NOT NULL,
"order_id" TEXT NOT NULL,
"sender_address" TEXT NOT NULL,
"content" TEXT NOT NULL,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP(3) NOT NULL,

CONSTRAINT "messages_pkey" PRIMARY KEY ("id")
);

-- CreateTable
CREATE TABLE "Order" (
"id" TEXT NOT NULL,

CONSTRAINT "Order_pkey" PRIMARY KEY ("id")
);

-- AddForeignKey
ALTER TABLE "messages" ADD CONSTRAINT "messages_order_id_fkey" FOREIGN KEY ("order_id") REFERENCES "Order"("id") ON DELETE RESTRICT ON UPDATE CASCADE;

-- AddForeignKey
ALTER TABLE "messages" ADD CONSTRAINT "messages_sender_address_fkey" FOREIGN KEY ("sender_address") REFERENCES "users"("wallet_address") ON DELETE RESTRICT ON UPDATE CASCADE;
2 changes: 1 addition & 1 deletion apps/backend/prisma/migrations/migration_lock.toml
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
# Please do not edit this file manually
# It should be added in your version-control system (e.g., Git)
provider = "postgresql"
provider = "postgresql"
21 changes: 21 additions & 0 deletions apps/backend/prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,29 @@ model User {
telegramUsername String? @map("telegram_username") @db.VarChar(50)
country String @db.VarChar(100)
isSeller Boolean @default(false) @map("is_seller")
messages Message[] @relation("UserMessages")
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")

@@map("users")
}


model Message {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To keep consistency with other Prisma models, please update the Message model to use camelCase field names with @map for database columns.

Example:

model Message {
  id             String   @id @default(uuid())
  orderId        String   @map("order_id")
  senderAddress  String   @map("sender_address")
  content        String
  createdAt      DateTime @default(now()) @map("created_at")
  updatedAt      DateTime @updatedAt @map("updated_at")

  order  Order @relation(fields: [orderId], references: [id])
  sender User  @relation("UserMessages", fields: [senderAddress], references: [walletAddress])

  @@map("messages")
}

Update the service and tests to match the new field names.

id String @id @default(uuid())
orderId String @map("order_id")
senderAddress String @map("sender_address")
content String
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")

order Order @relation(fields: [orderId], references: [id])
sender User @relation("UserMessages", fields: [senderAddress], references: [walletAddress])

@@map("messages")
}

model Order {
id String @id @default(uuid())
messages Message[]
}
126 changes: 63 additions & 63 deletions apps/backend/src/core/graphql/schema.gql
Original file line number Diff line number Diff line change
Expand Up @@ -3,33 +3,33 @@
# ------------------------------------------------------

type Category {
createdAt: DateTime!
id: ID!
imageUrl: String
name: String!
updatedAt: DateTime!
createdAt: DateTime!
id: ID!
imageUrl: String
name: String!
updatedAt: DateTime!
}

input CreateCategoryInput {
name: String!
name: String!
}

input CreateProductInput {
categoryId: String!
description: String
name: String!
price: Float!
slug: String!
categoryId: String!
description: String
name: String!
price: Float!
slug: String!
}

input CreateUserInput {
country: String!
email: String!
isSeller: Boolean! = false
name: String!
surname: String!
telegramUsername: String
walletAddress: String!
country: String!
email: String!
isSeller: Boolean! = false
name: String!
surname: String!
telegramUsername: String
walletAddress: String!
}

"""
Expand All @@ -38,66 +38,66 @@ A date-time string at UTC, such as 2019-12-03T09:54:33Z, compliant with the date
scalar DateTime

type Mutation {
createCategory(data: CreateCategoryInput!): Category!
createProduct(data: CreateProductInput!): ProductDTO!
createProductImage(createProductImage: ProductImageDTO!): ProductImage!
createUser(data: CreateUserInput!): User!
updateUser(data: UpdateUserInput!, walletAddress: String!): User!
createCategory(data: CreateCategoryInput!): Category!
createProduct(data: CreateProductInput!): ProductDTO!
createProductImage(createProductImage: ProductImageDTO!): ProductImage!
createUser(data: CreateUserInput!): User!
updateUser(data: UpdateUserInput!, walletAddress: String!): User!
}

type ProductDTO {
categoryId: String!
createdAt: DateTime!
description: String
id: ID!
name: String!
price: Float!
slug: String!
updatedAt: DateTime!
categoryId: String!
createdAt: DateTime!
description: String
id: ID!
name: String!
price: Float!
slug: String!
updatedAt: DateTime!
}

type ProductImage {
createdAt: DateTime!
id: ID!
imageUrl: String!
productId: String!
updatedAt: DateTime!
createdAt: DateTime!
id: ID!
imageUrl: String!
productId: String!
updatedAt: DateTime!
}

input ProductImageDTO {
imageUrl: String!
productId: String!
imageUrl: String!
productId: String!
}

type Query {
categories: [Category!]!
category(id: String!): Category
product(id: String!): ProductDTO
productImage(id: String!): ProductImage
productImages: [ProductImage!]!
products: [ProductDTO!]!
user(walletAddress: String!): User
users: [User!]!
categories: [Category!]!
category(id: String!): Category
product(id: String!): ProductDTO
productImage(id: String!): ProductImage
productImages: [ProductImage!]!
products: [ProductDTO!]!
user(walletAddress: String!): User
users: [User!]!
}

input UpdateUserInput {
country: String
email: String
isSeller: Boolean = false
name: String
surname: String
telegramUsername: String
walletAddress: String
country: String
email: String
isSeller: Boolean = false
name: String
surname: String
telegramUsername: String
walletAddress: String
}

type User {
country: String!
createdAt: DateTime!
email: String!
isSeller: Boolean!
name: String!
surname: String!
telegramUsername: String
updatedAt: DateTime!
walletAddress: String!
}
country: String!
createdAt: DateTime!
email: String!
isSeller: Boolean!
name: String!
surname: String!
telegramUsername: String
updatedAt: DateTime!
walletAddress: String!
}
13 changes: 13 additions & 0 deletions apps/backend/src/modules/message/dto/create-message.input.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { InputType, Int, Field } from '@nestjs/graphql';

@InputType()
export class CreateMessageInput {
@Field()
orderId: string;

@Field()
senderAddress: string;

@Field()
content: string;
}
8 changes: 8 additions & 0 deletions apps/backend/src/modules/message/dto/update-message.input.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { CreateMessageInput } from './create-message.input';
import { InputType, Field, Int, PartialType } from '@nestjs/graphql';

@InputType()
export class UpdateMessageInput extends PartialType(CreateMessageInput) {
@Field(() => Int)
id: number;
}
22 changes: 22 additions & 0 deletions apps/backend/src/modules/message/entities/message.entity.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import { ObjectType, Field, Int, ID } from '@nestjs/graphql';

@ObjectType()
export class Message {
@Field(() => ID)
id: string;

@Field()
orderId: string;

@Field()
senderAddress: string;

@Field()
content: string;

@Field()
createdAt: Date;

@Field()
updatedAt: Date;
}
11 changes: 11 additions & 0 deletions apps/backend/src/modules/message/message.module.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { Module } from '@nestjs/common';
import { MessageService } from './message.service';
import { MessageResolver } from './message.resolver';
import { PrismaService } from 'src/core/prisma/prisma.service';

@Module({
providers: [MessageResolver, MessageService, PrismaService],
})
export class MessageModule {}


Loading