Skip to content

Commit

Permalink
feat: added partners endpoint (SOS-RS#106)
Browse files Browse the repository at this point in the history
  • Loading branch information
fagundesjg committed May 15, 2024
1 parent a88475b commit fbf116f
Show file tree
Hide file tree
Showing 10 changed files with 139 additions and 1 deletion.
14 changes: 14 additions & 0 deletions prisma/migrations/20240514211840_/migration.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
-- CreateTable
CREATE TABLE "partners" (
"id" TEXT NOT NULL,
"name" TEXT NOT NULL,
"link" TEXT NOT NULL,
"iconName" TEXT NOT NULL DEFAULT 'Handshake',
"created_at" VARCHAR(32) NOT NULL,
"updated_at" VARCHAR(32),

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

-- CreateIndex
CREATE UNIQUE INDEX "partners_name_key" ON "partners"("name");
8 changes: 8 additions & 0 deletions prisma/migrations/20240515003750_/migration.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
/*
Warnings:
- You are about to drop the column `iconName` on the `partners` table. All the data in the column will be lost.
*/
-- AlterTable
ALTER TABLE "partners" DROP COLUMN "iconName";
10 changes: 10 additions & 0 deletions prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -123,3 +123,13 @@ model ShelterManagers {
@@id([shelterId, userId])
@@map("shelter_managers")
}

model Partners {
id String @id @default(uuid())
name String @unique
link String
createdAt String @map("created_at") @db.VarChar(32)
updatedAt String? @map("updated_at") @db.VarChar(32)
@@map("partners")
}
2 changes: 2 additions & 0 deletions src/app.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import { SessionsModule } from './sessions/sessions.module';
import { SupplyCategoriesModule } from './supply-categories/supply-categories.module';
import { ShelterManagersModule } from './shelter-managers/shelter-managers.module';
import { ShelterSupplyModule } from './shelter-supply/shelter-supply.module';
import { PartnersModule } from './partners/partners.module';

@Module({
imports: [
Expand All @@ -22,6 +23,7 @@ import { ShelterSupplyModule } from './shelter-supply/shelter-supply.module';
SupplyCategoriesModule,
ShelterManagersModule,
ShelterSupplyModule,
PartnersModule,
],
controllers: [],
providers: [
Expand Down
29 changes: 29 additions & 0 deletions src/partners/partners.controller.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import { Test, TestingModule } from '@nestjs/testing';
import { PartnersController } from './partners.controller';
import { PartnersService } from './partners.service';
import { PrismaService } from '../prisma/prisma.service';

describe('PartnersController', () => {
let controller: PartnersController;

beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
controllers: [PartnersController],
providers: [PartnersService],
})
.useMocker((token) => {
if (token === PrismaService) {
return {
supplyCategory: { findMany: jest.fn().mockResolvedValue(0) },
};
}
})
.compile();

controller = module.get<PartnersController>(PartnersController);
});

it('should be defined', () => {
expect(controller).toBeDefined();
});
});
21 changes: 21 additions & 0 deletions src/partners/partners.controller.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import { Controller, Get, HttpException, Logger } from '@nestjs/common';
import { PartnersService } from './partners.service';
import { ServerResponse } from '../utils';

@Controller('partners')
export class PartnersController {
private logger = new Logger(PartnersController.name);

constructor(private readonly partnersService: PartnersService) {}

@Get('')
async index() {
try {
const data = await this.partnersService.index();
return new ServerResponse(200, 'Successfully get partners', data);
} catch (err: any) {
this.logger.error(`Failed to get partners: ${err}`);
throw new HttpException(err?.code ?? err?.name ?? `${err}`, 400);
}
}
}
12 changes: 12 additions & 0 deletions src/partners/partners.module.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { Module } from '@nestjs/common';

import { PartnersService } from './partners.service';
import { PartnersController } from './partners.controller';
import { PrismaModule } from '../prisma/prisma.module';

@Module({
imports: [PrismaModule],
providers: [PartnersService],
controllers: [PartnersController],
})
export class PartnersModule {}
28 changes: 28 additions & 0 deletions src/partners/partners.service.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import { Test, TestingModule } from '@nestjs/testing';

import { PartnersService } from './partners.service';
import { PrismaService } from '../prisma/prisma.service';

describe('PartnersService', () => {
let service: PartnersService;

beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
providers: [PartnersService],
})
.useMocker((token) => {
if (token === PrismaService) {
return {
supplyCategory: { findMany: jest.fn().mockResolvedValue(0) },
};
}
})
.compile();

service = module.get<PartnersService>(PartnersService);
});

it('should be defined', () => {
expect(service).toBeDefined();
});
});
14 changes: 14 additions & 0 deletions src/partners/partners.service.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { Injectable } from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger';

import { PrismaService } from '../prisma/prisma.service';

@ApiTags('Parceiros')
@Injectable()
export class PartnersService {
constructor(private readonly prismaService: PrismaService) {}

async index() {
return await this.prismaService.partners.findMany({});
}
}
2 changes: 1 addition & 1 deletion src/shelter/shelter.service.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { Injectable, OnModuleInit } from '@nestjs/common';
import { Prisma } from '@prisma/client';
import { DefaultArgs } from '@prisma/client/runtime/library';
import { subDays } from 'date-fns';
import * as qs from 'qs';
import { z } from 'zod';

Expand All @@ -14,7 +15,6 @@ import {
FullUpdateShelterSchema,
UpdateShelterSchema,
} from './types/types';
import { subDays } from 'date-fns';

@Injectable()
export class ShelterService implements OnModuleInit {
Expand Down

0 comments on commit fbf116f

Please sign in to comment.