diff --git a/dist/main.js b/dist/main.js index a6a1c7d..b398b7e 100644 --- a/dist/main.js +++ b/dist/main.js @@ -14913,4 +14913,4 @@ module.exports = require("zlib"); /******/ var __webpack_exports__ = __webpack_require__("./src/main.ts"); /******/ /******/ })() -; \ No newline at end of file +; diff --git a/package.json b/package.json index 35903ae..bdd9489 100644 --- a/package.json +++ b/package.json @@ -64,4 +64,4 @@ "tsconfig-paths": "^4.2.0", "typescript": "^5.1.3" } -} \ No newline at end of file +} diff --git a/src/app.module.ts b/src/app.module.ts index 050b45d..d5729af 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -28,6 +28,9 @@ import { RabbitMQModule } from './rabbitmq/rabbitmq.module'; import { TutorialModule } from './tutorial/tutorial.module'; import { ReferralsModule } from './referrals/referrals.module'; import { SaveGameModule } from './save-game/save-game.module'; +import { PlayerModule } from './player/player.module'; +import { ProfileModule } from './profile/profile.module'; +import { ProgressModule } from './progress/progress.module'; import { SorobanModule } from './soroban/soroban.module'; import { NFTModule } from './nft/nft.module'; @@ -85,7 +88,9 @@ import { RecommendationsModule } from './recommendations/recommendations.module' TutorialModule, ReferralsModule, SaveGameModule, - + PlayerModule, + ProfileModule, + ProgressModule, SorobanModule, NFTModule, RewardsModule, diff --git a/src/player/dto/create-player.dto.ts b/src/player/dto/create-player.dto.ts new file mode 100644 index 0000000..fb33afa --- /dev/null +++ b/src/player/dto/create-player.dto.ts @@ -0,0 +1 @@ +export class CreatePlayerDto {} diff --git a/src/player/dto/update-player.dto.ts b/src/player/dto/update-player.dto.ts new file mode 100644 index 0000000..1ceb8fb --- /dev/null +++ b/src/player/dto/update-player.dto.ts @@ -0,0 +1,4 @@ +import { PartialType } from '@nestjs/swagger'; +import { CreatePlayerDto } from './create-player.dto'; + +export class UpdatePlayerDto extends PartialType(CreatePlayerDto) {} diff --git a/src/player/entities/player.entity.ts b/src/player/entities/player.entity.ts new file mode 100644 index 0000000..cfe5917 --- /dev/null +++ b/src/player/entities/player.entity.ts @@ -0,0 +1,28 @@ +import { + Entity, + PrimaryGeneratedColumn, + Column, + OneToOne, + OneToMany, +} from 'typeorm'; +// import { Profile } from '../profile/profile.entity'; +// import { Progress } from '../progress/progress.entity'; + +@Entity() +export class Player { + @PrimaryGeneratedColumn('uuid') + id: string; + + @Column({ unique: true }) + email: string; + + @Column() + password: string; + + //to be uncommented when Profile entity is created +// @OneToOne(() => Profile, profile => profile.player) +// profile: Profile; + +// @OneToMany(() => Progress, progress => progress.player) +// progress: Progress[]; +} diff --git a/src/player/player.controller.ts b/src/player/player.controller.ts new file mode 100644 index 0000000..27ce4c3 --- /dev/null +++ b/src/player/player.controller.ts @@ -0,0 +1,34 @@ +import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common'; +import { PlayerService } from './player.service'; +import { CreatePlayerDto } from './dto/create-player.dto'; +import { UpdatePlayerDto } from './dto/update-player.dto'; + +@Controller('player') +export class PlayerController { + constructor(private readonly playerService: PlayerService) {} + + @Post() + create(@Body() createPlayerDto: CreatePlayerDto) { + return this.playerService.create(createPlayerDto); + } + + @Get() + findAll() { + return this.playerService.findAll(); + } + + @Get(':id') + findOne(@Param('id') id: string) { + return this.playerService.findOne(+id); + } + + @Patch(':id') + update(@Param('id') id: string, @Body() updatePlayerDto: UpdatePlayerDto) { + return this.playerService.update(+id, updatePlayerDto); + } + + @Delete(':id') + remove(@Param('id') id: string) { + return this.playerService.remove(+id); + } +} diff --git a/src/player/player.module.ts b/src/player/player.module.ts new file mode 100644 index 0000000..3f402d4 --- /dev/null +++ b/src/player/player.module.ts @@ -0,0 +1,9 @@ +import { Module } from '@nestjs/common'; +import { PlayerService } from './player.service'; +import { PlayerController } from './player.controller'; + +@Module({ + controllers: [PlayerController], + providers: [PlayerService], +}) +export class PlayerModule {} diff --git a/src/player/player.service.ts b/src/player/player.service.ts new file mode 100644 index 0000000..9873aed --- /dev/null +++ b/src/player/player.service.ts @@ -0,0 +1,26 @@ +import { Injectable } from '@nestjs/common'; +import { CreatePlayerDto } from './dto/create-player.dto'; +import { UpdatePlayerDto } from './dto/update-player.dto'; + +@Injectable() +export class PlayerService { + create(createPlayerDto: CreatePlayerDto) { + return 'This action adds a new player'; + } + + findAll() { + return `This action returns all player`; + } + + findOne(id: number) { + return `This action returns a #${id} player`; + } + + update(id: number, updatePlayerDto: UpdatePlayerDto) { + return `This action updates a #${id} player`; + } + + remove(id: number) { + return `This action removes a #${id} player`; + } +} diff --git a/src/profile/dto/create-profile.dto.ts b/src/profile/dto/create-profile.dto.ts new file mode 100644 index 0000000..2913518 --- /dev/null +++ b/src/profile/dto/create-profile.dto.ts @@ -0,0 +1 @@ +export class CreateProfileDto {} diff --git a/src/profile/dto/update-profile.dto.ts b/src/profile/dto/update-profile.dto.ts new file mode 100644 index 0000000..81abfb2 --- /dev/null +++ b/src/profile/dto/update-profile.dto.ts @@ -0,0 +1,4 @@ +import { PartialType } from '@nestjs/swagger'; +import { CreateProfileDto } from './create-profile.dto'; + +export class UpdateProfileDto extends PartialType(CreateProfileDto) {} diff --git a/src/profile/entities/profile.entity.ts b/src/profile/entities/profile.entity.ts new file mode 100644 index 0000000..4c5afb4 --- /dev/null +++ b/src/profile/entities/profile.entity.ts @@ -0,0 +1,18 @@ +import { Player } from 'src/player/entities/player.entity'; +import { Entity, PrimaryGeneratedColumn, Column, OneToOne, JoinColumn } from 'typeorm'; + +@Entity() +export class Profile { + @PrimaryGeneratedColumn('uuid') + id: string; + + @Column() + username: string; + + @Column({ nullable: true }) + avatarUrl: string; + + @OneToOne(() => Player) + @JoinColumn() + player: Player; +} diff --git a/src/profile/profile.controller.ts b/src/profile/profile.controller.ts new file mode 100644 index 0000000..f08b1b5 --- /dev/null +++ b/src/profile/profile.controller.ts @@ -0,0 +1,19 @@ +import { Controller, Get, Patch, Body, Req, UseGuards } from '@nestjs/common'; +import { AuthGuard } from '@nestjs/passport'; +import { ProfileService } from './profile.service'; + +@UseGuards(AuthGuard('jwt')) +@Controller('profile') +export class ProfileController { + constructor(private service: ProfileService) {} + + @Get('me') + get(@Req() req) { + return this.service.get(req.user.userId); + } + + @Patch('me') + update(@Req() req, @Body() body) { + return this.service.update(req.user.userId, body); + } +} diff --git a/src/profile/profile.module.ts b/src/profile/profile.module.ts new file mode 100644 index 0000000..c9d59f7 --- /dev/null +++ b/src/profile/profile.module.ts @@ -0,0 +1,9 @@ +import { Module } from '@nestjs/common'; +import { ProfileService } from './profile.service'; +import { ProfileController } from './profile.controller'; + +@Module({ + controllers: [ProfileController], + providers: [ProfileService], +}) +export class ProfileModule {} diff --git a/src/profile/profile.service.ts b/src/profile/profile.service.ts new file mode 100644 index 0000000..ecfbf60 --- /dev/null +++ b/src/profile/profile.service.ts @@ -0,0 +1,26 @@ +import { Injectable } from '@nestjs/common'; +import { CreateProfileDto } from './dto/create-profile.dto'; +import { UpdateProfileDto } from './dto/update-profile.dto'; + +@Injectable() +export class ProfileService { + create(createProfileDto: CreateProfileDto) { + return 'This action adds a new profile'; + } + + findAll() { + return `This action returns all profile`; + } + + findOne(id: number) { + return `This action returns a #${id} profile`; + } + + update(id: number, updateProfileDto: UpdateProfileDto) { + return `This action updates a #${id} profile`; + } + + remove(id: number) { + return `This action removes a #${id} profile`; + } +} diff --git a/src/progress/dto/create-progress.dto.ts b/src/progress/dto/create-progress.dto.ts new file mode 100644 index 0000000..53914d4 --- /dev/null +++ b/src/progress/dto/create-progress.dto.ts @@ -0,0 +1 @@ +export class CreateProgressDto {} diff --git a/src/progress/dto/update-progress.dto.ts b/src/progress/dto/update-progress.dto.ts new file mode 100644 index 0000000..c337087 --- /dev/null +++ b/src/progress/dto/update-progress.dto.ts @@ -0,0 +1,4 @@ +import { PartialType } from '@nestjs/swagger'; +import { CreateProgressDto } from './create-progress.dto'; + +export class UpdateProgressDto extends PartialType(CreateProgressDto) {} diff --git a/src/progress/entities/progress.entity.ts b/src/progress/entities/progress.entity.ts new file mode 100644 index 0000000..332937c --- /dev/null +++ b/src/progress/entities/progress.entity.ts @@ -0,0 +1,17 @@ +import { Player } from 'src/player/entities/player.entity'; +import { Entity, PrimaryGeneratedColumn, Column, ManyToOne } from 'typeorm'; + +@Entity() +export class Progress { + @PrimaryGeneratedColumn('uuid') + id: string; + + @Column() + questId: string; + + @Column() + status: string; + + @ManyToOne(() => Player) + player: Player; +} diff --git a/src/progress/progress.controller.ts b/src/progress/progress.controller.ts new file mode 100644 index 0000000..db2fd9e --- /dev/null +++ b/src/progress/progress.controller.ts @@ -0,0 +1,34 @@ +import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common'; +import { ProgressService } from './progress.service'; +import { CreateProgressDto } from './dto/create-progress.dto'; +import { UpdateProgressDto } from './dto/update-progress.dto'; + +@Controller('progress') +export class ProgressController { + constructor(private readonly progressService: ProgressService) {} + + @Post() + create(@Body() createProgressDto: CreateProgressDto) { + return this.progressService.create(createProgressDto); + } + + @Get() + findAll() { + return this.progressService.findAll(); + } + + @Get(':id') + findOne(@Param('id') id: string) { + return this.progressService.findOne(+id); + } + + @Patch(':id') + update(@Param('id') id: string, @Body() updateProgressDto: UpdateProgressDto) { + return this.progressService.update(+id, updateProgressDto); + } + + @Delete(':id') + remove(@Param('id') id: string) { + return this.progressService.remove(+id); + } +} diff --git a/src/progress/progress.module.ts b/src/progress/progress.module.ts new file mode 100644 index 0000000..a399434 --- /dev/null +++ b/src/progress/progress.module.ts @@ -0,0 +1,9 @@ +import { Module } from '@nestjs/common'; +import { ProgressService } from './progress.service'; +import { ProgressController } from './progress.controller'; + +@Module({ + controllers: [ProgressController], + providers: [ProgressService], +}) +export class ProgressModule {} diff --git a/src/progress/progress.service.ts b/src/progress/progress.service.ts new file mode 100644 index 0000000..e5dab62 --- /dev/null +++ b/src/progress/progress.service.ts @@ -0,0 +1,26 @@ +import { Injectable } from '@nestjs/common'; +import { CreateProgressDto } from './dto/create-progress.dto'; +import { UpdateProgressDto } from './dto/update-progress.dto'; + +@Injectable() +export class ProgressService { + create(createProgressDto: CreateProgressDto) { + return 'This action adds a new progress'; + } + + findAll() { + return `This action returns all progress`; + } + + findOne(id: number) { + return `This action returns a #${id} progress`; + } + + update(id: number, updateProgressDto: UpdateProgressDto) { + return `This action updates a #${id} progress`; + } + + remove(id: number) { + return `This action removes a #${id} progress`; + } +}