Skip to content

Commit 47121c0

Browse files
authored
Merge pull request #11 from chingu-x/dev
release: voyage team module
2 parents d20585a + d48374c commit 47121c0

File tree

15 files changed

+223
-68
lines changed

15 files changed

+223
-68
lines changed

generate-exports.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,13 @@ import fs from "fs";
22
import path from "path";
33

44
const distPath = "./dist";
5+
const excludeFolders = ["rest-api"]; // Add the names of folders you want to exclude
56

67
const components = fs.readdirSync(distPath).filter((file) => {
7-
return fs.statSync(path.join(distPath, file)).isDirectory();
8+
return (
9+
fs.statSync(path.join(distPath, file)).isDirectory() &&
10+
!excludeFolders.includes(file)
11+
);
812
});
913

1014
const exportsObject = {
@@ -20,6 +24,10 @@ const exportsObject = {
2024
import: "./dist/resolver.js",
2125
types: "./dist/resolver.d.ts",
2226
},
27+
"./config": {
28+
import: "./dist/config.js",
29+
types: "./dist/config.d.ts",
30+
},
2331
};
2432

2533
components.forEach((component) => {

package.json

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,21 +59,25 @@
5959
"import": "./dist/resolver.js",
6060
"types": "./dist/resolver.d.ts"
6161
},
62+
"./config": {
63+
"import": "./dist/config.js",
64+
"types": "./dist/config.d.ts"
65+
},
6266
"./auth": {
6367
"import": "./dist/auth/index.js",
6468
"types": "./dist/auth/index.d.ts"
6569
},
66-
"./rest-api": {
67-
"import": "./dist/rest-api/index.js",
68-
"types": "./dist/rest-api/index.d.ts"
69-
},
7070
"./test": {
7171
"import": "./dist/test/index.js",
7272
"types": "./dist/test/index.d.ts"
7373
},
7474
"./user": {
7575
"import": "./dist/user/index.js",
7676
"types": "./dist/user/index.d.ts"
77+
},
78+
"./voyage-team": {
79+
"import": "./dist/voyage-team/index.js",
80+
"types": "./dist/voyage-team/index.d.ts"
7781
}
7882
},
7983
"dependencies": {
@@ -84,4 +88,4 @@
8488
"reflect-metadata": "^0.2.2",
8589
"tsyringe": "^4.8.0"
8690
}
87-
}
91+
}

src/config.ts

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ import { UserApiAdapter } from "./user/adapters/secondary/userApiAdapter";
1111
import { GetUserUsecase } from "./user/application/usecases/getUserUsecase";
1212
import { GetChinguMemberStatusUsecase } from "./user/application/usecases/getChinguMemberStatusUsecase";
1313
import { UserClientAdapter } from "./user/adapters/primary/userClientAdapter";
14+
import { VoyageTeamClientAdapter } from "./voyage-team/adapters/primary/voyageTeamClientAdapter";
15+
import { GetCurrentVoyageTeamUsecase } from "./voyage-team/application/usecases/getCurrentVoyageTeamUsecase";
16+
import { GetCurrentVoyageTeamIdUsecase } from "./voyage-team/application/usecases/getCurrentVoyageTeamIdUsecase";
17+
import { HasVoyageStartedUsecase } from "./voyage-team/application/usecases/hasVoyageStartedUsecase";
1418

1519
container.register(TYPES.RestApiPort, { useClass: AxiosAdapter });
1620
container.register(TYPES.AuthApiPort, { useClass: AuthApiAdapter });
@@ -29,17 +33,17 @@ container.register(TYPES.GetChinguMemberStatusUsecase, {
2933
useClass: GetChinguMemberStatusUsecase,
3034
});
3135
container.register(TYPES.UserClientAdapter, { useClass: UserClientAdapter });
32-
// container.register(TYPES.VoyageTeamClientAdapter, {
33-
// useClass: VoyageTeamClientAdapter,
34-
// });
35-
// container.register(TYPES.GetCurrentVoyageTeamUsecase, {
36-
// useClass: GetCurrentVoyageTeamUsecase,
37-
// });
38-
// container.register(TYPES.GetCurrentVoyageTeamIdUsecase, {
39-
// useClass: GetCurrentVoyageTeamIdUsecase,
40-
// });
41-
// container.register(TYPES.HasVoyageStartedUsecase, {
42-
// useClass: HasVoyageStartedUsecase,
43-
// });
36+
container.register(TYPES.VoyageTeamClientAdapter, {
37+
useClass: VoyageTeamClientAdapter,
38+
});
39+
container.register(TYPES.GetCurrentVoyageTeamUsecase, {
40+
useClass: GetCurrentVoyageTeamUsecase,
41+
});
42+
container.register(TYPES.GetCurrentVoyageTeamIdUsecase, {
43+
useClass: GetCurrentVoyageTeamIdUsecase,
44+
});
45+
container.register(TYPES.HasVoyageStartedUsecase, {
46+
useClass: HasVoyageStartedUsecase,
47+
});
4448

4549
export default container;

src/types.ts

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,20 @@ import type { UserApiPort } from "./user/ports/secondary/userApiPort";
1212
import type { UserClientAdapter } from "./user/adapters/primary/userClientAdapter";
1313
import type { GetUserUsecase } from "./user/application/usecases/getUserUsecase";
1414
import type { GetChinguMemberStatusUsecase } from "./user/application/usecases/getChinguMemberStatusUsecase";
15+
import type { VoyageTeamClientPort } from "./voyage-team/ports/primary/voyageTeamClientPort";
16+
import type { VoyageTeamClientAdapter } from "./voyage-team/adapters/primary/voyageTeamClientAdapter";
17+
import type { GetCurrentVoyageTeamUsecase } from "./voyage-team/application/usecases/getCurrentVoyageTeamUsecase";
18+
import type { GetCurrentVoyageTeamIdUsecase } from "./voyage-team/application/usecases/getCurrentVoyageTeamIdUsecase";
19+
import type { HasVoyageStartedUsecase } from "./voyage-team/application/usecases/hasVoyageStartedUsecase";
1520

1621
export const TYPES = {
1722
/* Ports */
1823
RestApiPort: Symbol.for("RestApiPort") as InjectionToken<RestApiPort>,
1924
AuthApiPort: Symbol.for("AuthApiPort") as InjectionToken<AuthApiPort>,
2025
UserApiPort: Symbol.for("UserApiPort") as InjectionToken<UserApiPort>,
21-
// VoyageTeamClientPort: Symbol.for(
22-
// "VoyageTeamClientPort"
23-
// ) as InjectionToken<VoyageTeamClientPort>,
26+
VoyageTeamClientPort: Symbol.for(
27+
"VoyageTeamClientPort",
28+
) as InjectionToken<VoyageTeamClientPort>,
2429

2530
/* Adapters */
2631
AuthClientAdapter: Symbol.for(
@@ -29,9 +34,9 @@ export const TYPES = {
2934
UserClientAdapter: Symbol.for(
3035
"UserClientAdapter",
3136
) as InjectionToken<UserClientAdapter>,
32-
// VoyageTeamClientAdapter: Symbol.for(
33-
// "VoyageTeamClientAdapter"
34-
// ) as InjectionToken<VoyageTeamClientAdapter>,
37+
VoyageTeamClientAdapter: Symbol.for(
38+
"VoyageTeamClientAdapter",
39+
) as InjectionToken<VoyageTeamClientAdapter>,
3540

3641
/* UseCases */
3742
LoginUsecase: Symbol.for("LoginUsecase") as InjectionToken<LoginUsecase>,
@@ -48,13 +53,13 @@ export const TYPES = {
4853
ResetPasswordUsecase: Symbol.for(
4954
"ResetPasswordUsecase",
5055
) as InjectionToken<ResetPasswordUsecase>,
51-
// GetCurrentVoyageTeamUsecase: Symbol.for(
52-
// "GetCurrentVoyageTeamUsecase"
53-
// ) as InjectionToken<GetCurrentVoyageTeamUsecase>,
54-
// GetCurrentVoyageTeamIdUsecase: Symbol.for(
55-
// "GetCurrentVoyageTeamIdUsecase"
56-
// ) as InjectionToken<GetCurrentVoyageTeamIdUsecase>,
57-
// HasVoyageStartedUsecase: Symbol.for(
58-
// "HasVoyageStartedUsecase"
59-
// ) as InjectionToken<HasVoyageStartedUsecase>,
56+
GetCurrentVoyageTeamUsecase: Symbol.for(
57+
"GetCurrentVoyageTeamUsecase",
58+
) as InjectionToken<GetCurrentVoyageTeamUsecase>,
59+
GetCurrentVoyageTeamIdUsecase: Symbol.for(
60+
"GetCurrentVoyageTeamIdUsecase",
61+
) as InjectionToken<GetCurrentVoyageTeamIdUsecase>,
62+
HasVoyageStartedUsecase: Symbol.for(
63+
"HasVoyageStartedUsecase",
64+
) as InjectionToken<HasVoyageStartedUsecase>,
6065
};
Lines changed: 1 addition & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// import { type VoyageTeamMember } from "@/modules/voyage-team/application/dtos/response.dto";
1+
import { type VoyageTeamMember } from "@/voyage-team/application/dtos/response.dto";
22

33
export interface User {
44
id: string;
@@ -20,30 +20,3 @@ export interface User {
2020
}
2121

2222
type providerType = "discord";
23-
24-
// remove later
25-
26-
export interface VoyageTeamMember {
27-
id: number;
28-
voyageTeamId: number;
29-
voyageTeam: VoyageTeam;
30-
voyageRole: VoyageRole;
31-
}
32-
33-
interface Voyage {
34-
status: VoyageStatus;
35-
}
36-
37-
interface VoyageTeam {
38-
name: string;
39-
voyage: Voyage;
40-
projectSubmitted: boolean;
41-
}
42-
43-
export interface VoyageRole {
44-
name: string;
45-
}
46-
47-
export interface VoyageStatus {
48-
name: string;
49-
}

src/user/application/usecases/getUserUsecase.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export class GetUserUsecase {
2626
}
2727
}
2828

29-
// refactor below code to separate module when ready
29+
// refactor below code to separate module (sprints) when ready
3030

3131
const currentDate =
3232
process.env.NODE_ENV === "development"

src/user/index.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,7 @@ export {
55
GetUserResponseDto,
66
GetChinguMemberStatusResponseDto,
77
} from "./application/dtos/response.dto";
8-
export {
9-
User,
10-
VoyageTeamMember,
11-
VoyageRole,
12-
VoyageStatus,
13-
} from "./application/types/index";
8+
export { User } from "./application/types/index";
149
export { GetChinguMemberStatusUsecase } from "./application/usecases/getChinguMemberStatusUsecase";
1510
export { GetUserUsecase } from "./application/usecases/getUserUsecase";
1611
export { UserClientPort } from "./ports/primary/userClientPort";
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import { inject, injectable } from "tsyringe";
2+
import { TYPES } from "@/types";
3+
import { VoyageTeamClientPort } from "@/voyage-team/ports/primary/voyageTeamClientPort";
4+
import { GetUserRequestDto } from "@/user/application/dtos/request.dtos";
5+
import {
6+
GetCurrentVoyageTeamIdResponseDto,
7+
GetCurrentVoyageTeamResponseDto,
8+
HasVoyageStartedResponseDto,
9+
} from "@/voyage-team/application/dtos/response.dto";
10+
import { GetCurrentVoyageTeamUsecase } from "@/voyage-team/application/usecases/getCurrentVoyageTeamUsecase";
11+
import { GetCurrentVoyageTeamIdUsecase } from "@/voyage-team/application/usecases/getCurrentVoyageTeamIdUsecase";
12+
import { HasVoyageStartedRequestDto } from "@/voyage-team/application/dtos/request.dto";
13+
import { HasVoyageStartedUsecase } from "@/voyage-team/application/usecases/hasVoyageStartedUsecase";
14+
15+
@injectable()
16+
export class VoyageTeamClientAdapter implements VoyageTeamClientPort {
17+
constructor(
18+
@inject(TYPES.GetCurrentVoyageTeamUsecase)
19+
private readonly getCurrentVoyageTeamUsecase: GetCurrentVoyageTeamUsecase,
20+
21+
@inject(TYPES.GetCurrentVoyageTeamIdUsecase)
22+
private readonly getCurrentVoyageTeamIdUsecase: GetCurrentVoyageTeamIdUsecase,
23+
24+
@inject(TYPES.HasVoyageStartedUsecase)
25+
private readonly hasVoyageStartedUsecase: HasVoyageStartedUsecase,
26+
) {}
27+
28+
getCurrentVoyageTeam(
29+
user: GetUserRequestDto,
30+
): GetCurrentVoyageTeamResponseDto | undefined {
31+
return this.getCurrentVoyageTeamUsecase.execute(user);
32+
}
33+
34+
getCurrentVoyageTeamId(
35+
user: GetUserRequestDto,
36+
): GetCurrentVoyageTeamIdResponseDto | undefined {
37+
const currentVoyageTeam = this.getCurrentVoyageTeam(user);
38+
return this.getCurrentVoyageTeamIdUsecase.execute(currentVoyageTeam);
39+
}
40+
41+
hasVoyageStarted({
42+
isAuthenticated,
43+
user,
44+
}: HasVoyageStartedRequestDto): HasVoyageStartedResponseDto {
45+
return this.hasVoyageStartedUsecase.execute({ isAuthenticated, user });
46+
}
47+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { type VoyageTeamMember } from "./response.dto";
2+
import { type User } from "@/user/application/types";
3+
4+
export type GetCurrentVoyageTeamIdRequestDto = VoyageTeamMember;
5+
export interface HasVoyageStartedRequestDto {
6+
isAuthenticated: boolean;
7+
user: User;
8+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
export type GetCurrentVoyageTeamResponseDto = VoyageTeamMember;
2+
export type GetCurrentVoyageTeamIdResponseDto = string | undefined;
3+
export type HasVoyageStartedResponseDto = boolean;
4+
5+
export interface VoyageTeamMember {
6+
id: number;
7+
voyageTeamId: number;
8+
voyageTeam: VoyageTeam;
9+
voyageRole: VoyageRole;
10+
}
11+
12+
export interface VoyageStatus {
13+
name: string;
14+
}
15+
16+
interface Voyage {
17+
status: VoyageStatus;
18+
}
19+
20+
interface VoyageTeam {
21+
name: string;
22+
voyage: Voyage;
23+
projectSubmitted: boolean;
24+
}
25+
26+
export interface VoyageRole {
27+
name: string;
28+
}

0 commit comments

Comments
 (0)