@laboratory-one/api-components 0.0.17 → 0.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/dist/cjs/auth/auth.service.d.ts +5 -0
  2. package/dist/cjs/auth/auth.service.d.ts.map +1 -1
  3. package/dist/cjs/auth/auth.service.js +14 -0
  4. package/dist/cjs/auth/auth.service.js.map +1 -1
  5. package/dist/cjs/user/dtos/delete-user.request.dto.d.ts +1 -1
  6. package/dist/cjs/user/dtos/delete-user.request.dto.d.ts.map +1 -1
  7. package/dist/cjs/user/dtos/delete-user.request.dto.js +1 -1
  8. package/dist/cjs/user/dtos/delete-user.request.dto.js.map +1 -1
  9. package/dist/cjs/user/dtos/index.d.ts +3 -0
  10. package/dist/cjs/user/dtos/index.d.ts.map +1 -1
  11. package/dist/cjs/user/dtos/index.js +3 -0
  12. package/dist/cjs/user/dtos/index.js.map +1 -1
  13. package/dist/cjs/user/dtos/phone-login-verify.request.dto.d.ts +6 -0
  14. package/dist/cjs/user/dtos/phone-login-verify.request.dto.d.ts.map +1 -0
  15. package/dist/cjs/user/dtos/phone-login-verify.request.dto.js +25 -0
  16. package/dist/cjs/user/dtos/phone-login-verify.request.dto.js.map +1 -0
  17. package/dist/cjs/user/dtos/phone-login.request.dto.d.ts +4 -0
  18. package/dist/cjs/user/dtos/phone-login.request.dto.d.ts.map +1 -0
  19. package/dist/cjs/user/dtos/phone-login.request.dto.js +15 -0
  20. package/dist/cjs/user/dtos/phone-login.request.dto.js.map +1 -0
  21. package/dist/cjs/user/dtos/phone-login.response.dto.d.ts +5 -0
  22. package/dist/cjs/user/dtos/phone-login.response.dto.d.ts.map +1 -0
  23. package/dist/cjs/user/dtos/phone-login.response.dto.js +20 -0
  24. package/dist/cjs/user/dtos/phone-login.response.dto.js.map +1 -0
  25. package/dist/cjs/user/dtos/update-user.request.dto.d.ts +1 -0
  26. package/dist/cjs/user/dtos/update-user.request.dto.d.ts.map +1 -1
  27. package/dist/cjs/user/dtos/update-user.request.dto.js +6 -0
  28. package/dist/cjs/user/dtos/update-user.request.dto.js.map +1 -1
  29. package/dist/cjs/user/schemas/index.d.ts +2 -0
  30. package/dist/cjs/user/schemas/index.d.ts.map +1 -1
  31. package/dist/cjs/user/schemas/index.js +2 -0
  32. package/dist/cjs/user/schemas/index.js.map +1 -1
  33. package/dist/cjs/user/schemas/phone-login-verify.schema.d.ts +15 -0
  34. package/dist/cjs/user/schemas/phone-login-verify.schema.d.ts.map +1 -0
  35. package/dist/cjs/user/schemas/phone-login-verify.schema.js +11 -0
  36. package/dist/cjs/user/schemas/phone-login-verify.schema.js.map +1 -0
  37. package/dist/cjs/user/schemas/phone-login.schema.d.ts +9 -0
  38. package/dist/cjs/user/schemas/phone-login.schema.d.ts.map +1 -0
  39. package/dist/cjs/user/schemas/phone-login.schema.js +9 -0
  40. package/dist/cjs/user/schemas/phone-login.schema.js.map +1 -0
  41. package/dist/cjs/user/schemas/update-user.schema.d.ts +3 -0
  42. package/dist/cjs/user/schemas/update-user.schema.d.ts.map +1 -1
  43. package/dist/cjs/user/schemas/update-user.schema.js +1 -0
  44. package/dist/cjs/user/schemas/update-user.schema.js.map +1 -1
  45. package/dist/cjs/user/user.controller.d.ts +6 -6
  46. package/dist/cjs/user/user.controller.d.ts.map +1 -1
  47. package/dist/cjs/user/user.controller.js +115 -15
  48. package/dist/cjs/user/user.controller.js.map +1 -1
  49. package/dist/cjs/user/user.service.d.ts +1 -0
  50. package/dist/cjs/user/user.service.d.ts.map +1 -1
  51. package/dist/cjs/user/user.service.js +6 -0
  52. package/dist/cjs/user/user.service.js.map +1 -1
  53. package/dist/cjs/utils/schema.util.d.ts +2 -0
  54. package/dist/cjs/utils/schema.util.d.ts.map +1 -1
  55. package/dist/cjs/utils/schema.util.js +2 -0
  56. package/dist/cjs/utils/schema.util.js.map +1 -1
  57. package/dist/esm/auth/auth.service.d.ts +5 -0
  58. package/dist/esm/auth/auth.service.d.ts.map +1 -1
  59. package/dist/esm/auth/auth.service.js +14 -0
  60. package/dist/esm/auth/auth.service.js.map +1 -1
  61. package/dist/esm/user/dtos/delete-user.request.dto.d.ts +1 -1
  62. package/dist/esm/user/dtos/delete-user.request.dto.d.ts.map +1 -1
  63. package/dist/esm/user/dtos/delete-user.request.dto.js +1 -1
  64. package/dist/esm/user/dtos/delete-user.request.dto.js.map +1 -1
  65. package/dist/esm/user/dtos/index.d.ts +3 -0
  66. package/dist/esm/user/dtos/index.d.ts.map +1 -1
  67. package/dist/esm/user/dtos/index.js +3 -0
  68. package/dist/esm/user/dtos/index.js.map +1 -1
  69. package/dist/esm/user/dtos/phone-login-verify.request.dto.d.ts +6 -0
  70. package/dist/esm/user/dtos/phone-login-verify.request.dto.d.ts.map +1 -0
  71. package/dist/esm/user/dtos/phone-login-verify.request.dto.js +21 -0
  72. package/dist/esm/user/dtos/phone-login-verify.request.dto.js.map +1 -0
  73. package/dist/esm/user/dtos/phone-login.request.dto.d.ts +4 -0
  74. package/dist/esm/user/dtos/phone-login.request.dto.d.ts.map +1 -0
  75. package/dist/esm/user/dtos/phone-login.request.dto.js +11 -0
  76. package/dist/esm/user/dtos/phone-login.request.dto.js.map +1 -0
  77. package/dist/esm/user/dtos/phone-login.response.dto.d.ts +5 -0
  78. package/dist/esm/user/dtos/phone-login.response.dto.d.ts.map +1 -0
  79. package/dist/esm/user/dtos/phone-login.response.dto.js +16 -0
  80. package/dist/esm/user/dtos/phone-login.response.dto.js.map +1 -0
  81. package/dist/esm/user/dtos/update-user.request.dto.d.ts +1 -0
  82. package/dist/esm/user/dtos/update-user.request.dto.d.ts.map +1 -1
  83. package/dist/esm/user/dtos/update-user.request.dto.js +6 -0
  84. package/dist/esm/user/dtos/update-user.request.dto.js.map +1 -1
  85. package/dist/esm/user/schemas/index.d.ts +2 -0
  86. package/dist/esm/user/schemas/index.d.ts.map +1 -1
  87. package/dist/esm/user/schemas/index.js +2 -0
  88. package/dist/esm/user/schemas/index.js.map +1 -1
  89. package/dist/esm/user/schemas/phone-login-verify.schema.d.ts +15 -0
  90. package/dist/esm/user/schemas/phone-login-verify.schema.d.ts.map +1 -0
  91. package/dist/esm/user/schemas/phone-login-verify.schema.js +8 -0
  92. package/dist/esm/user/schemas/phone-login-verify.schema.js.map +1 -0
  93. package/dist/esm/user/schemas/phone-login.schema.d.ts +9 -0
  94. package/dist/esm/user/schemas/phone-login.schema.d.ts.map +1 -0
  95. package/dist/esm/user/schemas/phone-login.schema.js +6 -0
  96. package/dist/esm/user/schemas/phone-login.schema.js.map +1 -0
  97. package/dist/esm/user/schemas/update-user.schema.d.ts +3 -0
  98. package/dist/esm/user/schemas/update-user.schema.d.ts.map +1 -1
  99. package/dist/esm/user/schemas/update-user.schema.js +1 -0
  100. package/dist/esm/user/schemas/update-user.schema.js.map +1 -1
  101. package/dist/esm/user/user.controller.d.ts +6 -6
  102. package/dist/esm/user/user.controller.d.ts.map +1 -1
  103. package/dist/esm/user/user.controller.js +107 -7
  104. package/dist/esm/user/user.controller.js.map +1 -1
  105. package/dist/esm/user/user.service.d.ts +1 -0
  106. package/dist/esm/user/user.service.d.ts.map +1 -1
  107. package/dist/esm/user/user.service.js +6 -0
  108. package/dist/esm/user/user.service.js.map +1 -1
  109. package/dist/esm/utils/schema.util.d.ts +2 -0
  110. package/dist/esm/utils/schema.util.d.ts.map +1 -1
  111. package/dist/esm/utils/schema.util.js +2 -0
  112. package/dist/esm/utils/schema.util.js.map +1 -1
  113. package/dist/tsconfig.tsbuildinfo +1 -1
  114. package/package.json +1 -1
  115. package/src/auth/auth.service.ts +26 -0
  116. package/src/user/dtos/delete-user.request.dto.ts +1 -1
  117. package/src/user/dtos/index.ts +3 -0
  118. package/src/user/dtos/phone-login-verify.request.dto.ts +16 -0
  119. package/src/user/dtos/phone-login.request.dto.ts +8 -0
  120. package/src/user/dtos/phone-login.response.dto.ts +12 -0
  121. package/src/user/dtos/update-user.request.dto.ts +5 -0
  122. package/src/user/schemas/index.ts +2 -0
  123. package/src/user/schemas/phone-login-verify.schema.ts +9 -0
  124. package/src/user/schemas/phone-login.schema.ts +7 -0
  125. package/src/user/schemas/update-user.schema.ts +1 -0
  126. package/src/user/user.controller.ts +142 -7
  127. package/src/user/user.service.ts +8 -0
  128. package/src/utils/schema.util.ts +2 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["user/schemas/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["user/schemas/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC"}
@@ -1,4 +1,6 @@
1
1
  export * from './signup.schema';
2
2
  export * from './delete-user.schema';
3
3
  export * from './update-user.schema';
4
+ export * from './phone-login.schema';
5
+ export * from './phone-login-verify.schema';
4
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"/","sources":["user/schemas/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC","sourcesContent":["export * from './signup.schema';\nexport * from './delete-user.schema';\nexport * from './update-user.schema';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["user/schemas/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC","sourcesContent":["export * from './signup.schema';\nexport * from './delete-user.schema';\nexport * from './update-user.schema';\nexport * from './phone-login.schema';\nexport * from './phone-login-verify.schema';\n"]}
@@ -0,0 +1,15 @@
1
+ import { z } from 'zod';
2
+ export declare const phoneLoginVerifySchema: z.ZodObject<{
3
+ code: z.ZodString;
4
+ phoneNumber: z.ZodString;
5
+ methodId: z.ZodString;
6
+ }, "strip", z.ZodTypeAny, {
7
+ phoneNumber?: string;
8
+ code?: string;
9
+ methodId?: string;
10
+ }, {
11
+ phoneNumber?: string;
12
+ code?: string;
13
+ methodId?: string;
14
+ }>;
15
+ //# sourceMappingURL=phone-login-verify.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phone-login-verify.schema.d.ts","sourceRoot":"/","sources":["user/schemas/phone-login-verify.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,sBAAsB;;;;;;;;;;;;EAIjC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { z } from 'zod';
2
+ import { schemaPatterns } from '../../utils';
3
+ export const phoneLoginVerifySchema = z.object({
4
+ code: schemaPatterns.code,
5
+ phoneNumber: schemaPatterns.phoneNumber,
6
+ methodId: schemaPatterns.methodId,
7
+ });
8
+ //# sourceMappingURL=phone-login-verify.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phone-login-verify.schema.js","sourceRoot":"/","sources":["user/schemas/phone-login-verify.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,IAAI,EAAE,cAAc,CAAC,IAAI;IACzB,WAAW,EAAE,cAAc,CAAC,WAAW;IACvC,QAAQ,EAAE,cAAc,CAAC,QAAQ;CAClC,CAAC,CAAC","sourcesContent":["import { z } from 'zod';\n\nimport { schemaPatterns } from '../../utils';\n\nexport const phoneLoginVerifySchema = z.object({\n code: schemaPatterns.code,\n phoneNumber: schemaPatterns.phoneNumber,\n methodId: schemaPatterns.methodId,\n});\n"]}
@@ -0,0 +1,9 @@
1
+ import { z } from 'zod';
2
+ export declare const phoneLoginSchema: z.ZodObject<{
3
+ phoneNumber: z.ZodString;
4
+ }, "strip", z.ZodTypeAny, {
5
+ phoneNumber?: string;
6
+ }, {
7
+ phoneNumber?: string;
8
+ }>;
9
+ //# sourceMappingURL=phone-login.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phone-login.schema.d.ts","sourceRoot":"/","sources":["user/schemas/phone-login.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,gBAAgB;;;;;;EAE3B,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { z } from 'zod';
2
+ import { schemaPatterns } from '../../utils';
3
+ export const phoneLoginSchema = z.object({
4
+ phoneNumber: schemaPatterns.phoneNumber,
5
+ });
6
+ //# sourceMappingURL=phone-login.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phone-login.schema.js","sourceRoot":"/","sources":["user/schemas/phone-login.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,WAAW,EAAE,cAAc,CAAC,WAAW;CACxC,CAAC,CAAC","sourcesContent":["import { z } from 'zod';\n\nimport { schemaPatterns } from '../../utils';\n\nexport const phoneLoginSchema = z.object({\n phoneNumber: schemaPatterns.phoneNumber,\n});\n"]}
@@ -4,12 +4,15 @@ export declare const updateUserSchema: z.ZodObject<{
4
4
  fullName: z.ZodOptional<z.ZodString>;
5
5
  pushToken: z.ZodOptional<z.ZodString>;
6
6
  tz: z.ZodOptional<z.ZodNumber>;
7
+ email: z.ZodOptional<z.ZodString>;
7
8
  }, "strip", z.ZodTypeAny, {
9
+ email?: string;
8
10
  phoneNumber?: string;
9
11
  fullName?: string;
10
12
  pushToken?: string;
11
13
  tz?: number;
12
14
  }, {
15
+ email?: string;
13
16
  phoneNumber?: string;
14
17
  fullName?: string;
15
18
  pushToken?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"update-user.schema.d.ts","sourceRoot":"/","sources":["user/schemas/update-user.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;EAOjB,CAAC"}
1
+ {"version":3,"file":"update-user.schema.d.ts","sourceRoot":"/","sources":["user/schemas/update-user.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;EAQjB,CAAC"}
@@ -6,6 +6,7 @@ export const updateUserSchema = z
6
6
  fullName: schemaPatterns.fullName,
7
7
  pushToken: schemaPatterns.pushToken,
8
8
  tz: schemaPatterns.tz,
9
+ email: schemaPatterns.email,
9
10
  })
10
11
  .partial();
11
12
  //# sourceMappingURL=update-user.schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"update-user.schema.js","sourceRoot":"/","sources":["user/schemas/update-user.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,WAAW,EAAE,cAAc,CAAC,WAAW;IACvC,QAAQ,EAAE,cAAc,CAAC,QAAQ;IACjC,SAAS,EAAE,cAAc,CAAC,SAAS;IACnC,EAAE,EAAE,cAAc,CAAC,EAAE;CACtB,CAAC;KACD,OAAO,EAAE,CAAC","sourcesContent":["import { z } from 'zod';\n\nimport { schemaPatterns } from '../../utils';\n\nexport const updateUserSchema = z\n .object({\n phoneNumber: schemaPatterns.phoneNumber,\n fullName: schemaPatterns.fullName,\n pushToken: schemaPatterns.pushToken,\n tz: schemaPatterns.tz,\n })\n .partial();\n"]}
1
+ {"version":3,"file":"update-user.schema.js","sourceRoot":"/","sources":["user/schemas/update-user.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,WAAW,EAAE,cAAc,CAAC,WAAW;IACvC,QAAQ,EAAE,cAAc,CAAC,QAAQ;IACjC,SAAS,EAAE,cAAc,CAAC,SAAS;IACnC,EAAE,EAAE,cAAc,CAAC,EAAE;IACrB,KAAK,EAAE,cAAc,CAAC,KAAK;CAC5B,CAAC;KACD,OAAO,EAAE,CAAC","sourcesContent":["import { z } from 'zod';\n\nimport { schemaPatterns } from '../../utils';\n\nexport const updateUserSchema = z\n .object({\n phoneNumber: schemaPatterns.phoneNumber,\n fullName: schemaPatterns.fullName,\n pushToken: schemaPatterns.pushToken,\n tz: schemaPatterns.tz,\n email: schemaPatterns.email,\n })\n .partial();\n"]}
@@ -1,11 +1,8 @@
1
1
  import { JwtService } from '@nestjs/jwt';
2
- import { AuthService } from '../auth/auth.service';
2
+ import { AuthService } from '../auth';
3
3
  import { UserService } from './user.service';
4
- import { GetUserResponseDto } from './dtos/get-user.response.dto';
5
- import { UpdateUserRequestDto } from './dtos/update-user.request.dto';
6
- import { RegisterResponseDto } from './dtos/register.response.dto';
7
- import { RegisterRequestDto } from './dtos/register.request.dto';
8
- import { PushService } from '../push/push.service';
4
+ import { GetUserResponseDto, UpdateUserRequestDto, RegisterResponseDto, DeleteUserRequestDto, PhoneLoginRequestDto, PhoneLoginResponseDto, PhoneLoginVerifyRequestDto, RegisterRequestDto } from './dtos';
5
+ import { PushService } from '../push';
9
6
  import * as types from '../types';
10
7
  export declare class UserController {
11
8
  private userService;
@@ -13,10 +10,13 @@ export declare class UserController {
13
10
  private pushService;
14
11
  private jwtService;
15
12
  constructor(userService: UserService, authService: AuthService, pushService: PushService, jwtService: JwtService);
13
+ phoneLogin(dto: PhoneLoginRequestDto): Promise<PhoneLoginResponseDto>;
14
+ phoneLoginVerify(dto: PhoneLoginVerifyRequestDto): Promise<RegisterResponseDto>;
16
15
  signup(dto: RegisterRequestDto): Promise<RegisterResponseDto>;
17
16
  login(dto: RegisterRequestDto): Promise<RegisterResponseDto>;
18
17
  getSelf(req: types.reqType): Promise<GetUserResponseDto>;
19
18
  edit(dto: UpdateUserRequestDto, req: types.reqType): Promise<GetUserResponseDto>;
20
19
  pushTest(req: types.reqType): Promise<void>;
20
+ delete(req: types.reqType, dto: DeleteUserRequestDto): Promise<void>;
21
21
  }
22
22
  //# sourceMappingURL=user.controller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"user.controller.d.ts","sourceRoot":"/","sources":["user/user.controller.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAMzC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AASnD,OAAO,KAAK,KAAK,MAAM,UAAU,CAAC;AAElC,qBAEa,cAAc;IAEvB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,UAAU;gBAHV,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU;IAS1B,MAAM,CAAS,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAqCrE,KAAK,CAAS,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAkCpE,OAAO,CAAY,GAAG,EAAE,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAmBnE,IAAI,CACA,GAAG,EAAE,oBAAoB,EACtB,GAAG,EAAE,KAAK,CAAC,OAAO,GAC5B,OAAO,CAAC,kBAAkB,CAAC;IAoCxB,QAAQ,CAAY,GAAG,EAAE,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAiB7D"}
1
+ {"version":3,"file":"user.controller.d.ts","sourceRoot":"/","sources":["user/user.controller.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAOzC,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,EAC1B,kBAAkB,EACnB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAStC,OAAO,KAAK,KAAK,MAAM,UAAU,CAAC;AAOlC,qBAEa,cAAc;IAEvB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,UAAU;gBAHV,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU;IAS1B,UAAU,CACN,GAAG,EAAE,oBAAoB,GAChC,OAAO,CAAC,qBAAqB,CAAC;IA0C3B,gBAAgB,CACZ,GAAG,EAAE,0BAA0B,GACtC,OAAO,CAAC,mBAAmB,CAAC;IAqCzB,MAAM,CAAS,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAsCrE,KAAK,CAAS,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAkCpE,OAAO,CAAY,GAAG,EAAE,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAmBnE,IAAI,CACA,GAAG,EAAE,oBAAoB,EACtB,GAAG,EAAE,KAAK,CAAC,OAAO,GAC5B,OAAO,CAAC,kBAAkB,CAAC;IAoCxB,QAAQ,CAAY,GAAG,EAAE,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBtD,MAAM,CACC,GAAG,EAAE,KAAK,CAAC,OAAO,EACrB,GAAG,EAAE,oBAAoB,GAChC,OAAO,CAAC,IAAI,CAAC;CA4BjB"}
@@ -2,17 +2,15 @@ import { __decorate, __metadata, __param } from "tslib";
2
2
  import { Body, Controller, Get, Post, Request, UseGuards, } from '@nestjs/common';
3
3
  import { JwtService } from '@nestjs/jwt';
4
4
  import { ApiResponse, ApiTags } from '@nestjs/swagger';
5
- import { OnboardingStatus } from '@prisma/client';
6
- import { AuthService } from '../auth/auth.service';
5
+ import { OnboardingStatus, UserStatus } from '@prisma/client';
6
+ import { AuthService } from '../auth';
7
7
  import { UserService } from './user.service';
8
- import { GetUserResponseDto } from './dtos/get-user.response.dto';
9
- import { UpdateUserRequestDto } from './dtos/update-user.request.dto';
10
- import { RegisterResponseDto } from './dtos/register.response.dto';
11
- import { RegisterRequestDto } from './dtos/register.request.dto';
12
- import { PushService } from '../push/push.service';
8
+ import { GetUserResponseDto, UpdateUserRequestDto, RegisterResponseDto, DeleteUserRequestDto, PhoneLoginRequestDto, PhoneLoginResponseDto, PhoneLoginVerifyRequestDto, RegisterRequestDto, } from './dtos';
9
+ import { PushService } from '../push';
13
10
  import { cleanPhoneNumber, cleanString, cleanStringAndLowercase, handleError, utcOffsetToHours, } from '../utils';
14
11
  import { AuthGuard } from '../guard';
15
12
  import * as types from '../types';
13
+ import { deleteUserSchema, phoneLoginSchema, phoneLoginVerifySchema, } from './schemas';
16
14
  let UserController = class UserController {
17
15
  constructor(userService, authService, pushService, jwtService) {
18
16
  this.userService = userService;
@@ -20,6 +18,48 @@ let UserController = class UserController {
20
18
  this.pushService = pushService;
21
19
  this.jwtService = jwtService;
22
20
  }
21
+ async phoneLogin(dto) {
22
+ try {
23
+ const parsedDto = phoneLoginSchema.parse(dto);
24
+ const phoneNumber = cleanPhoneNumber(parsedDto.phoneNumber);
25
+ const user = await this.userService.findOneByPhoneNumber(parsedDto.phoneNumber);
26
+ if (!user) {
27
+ const newUser = await this.userService.create({
28
+ phoneNumber,
29
+ });
30
+ if (!newUser) {
31
+ handleError('Error creating user');
32
+ }
33
+ }
34
+ const res = await this.authService.phoneLoginOrCreate(phoneNumber);
35
+ return {
36
+ methodId: res.phone_id,
37
+ phoneNumber,
38
+ };
39
+ }
40
+ catch (error) {
41
+ handleError(error);
42
+ }
43
+ }
44
+ async phoneLoginVerify(dto) {
45
+ try {
46
+ const parsedDto = phoneLoginVerifySchema.parse(dto);
47
+ const res = await this.authService.phoneAuthenticate({
48
+ methodId: parsedDto.methodId,
49
+ code: parsedDto.code,
50
+ });
51
+ const user = await this.userService.findOneByPhoneNumber(parsedDto.phoneNumber);
52
+ await this.userService.update(user.id, {
53
+ externalId: res.user_id,
54
+ });
55
+ const payload = { userId: user.id };
56
+ const token = await this.jwtService.signAsync(payload);
57
+ return Object.assign(Object.assign({}, user), { token });
58
+ }
59
+ catch (error) {
60
+ handleError(error);
61
+ }
62
+ }
23
63
  async signup(dto) {
24
64
  const cleanedDTO = {
25
65
  email: cleanStringAndLowercase(dto.email),
@@ -30,6 +70,7 @@ let UserController = class UserController {
30
70
  handleError('Error creating user');
31
71
  }
32
72
  const user = await this.userService.create({
73
+ phoneNumber: res.user_id,
33
74
  email: cleanedDTO.email,
34
75
  externalId: res.user_id,
35
76
  });
@@ -105,7 +146,52 @@ let UserController = class UserController {
105
146
  handleError(error);
106
147
  }
107
148
  }
149
+ async delete(req, dto) {
150
+ try {
151
+ const parsedDto = deleteUserSchema.parse(dto);
152
+ const user = await this.userService.findOneByUserId(req.user.userId);
153
+ if (!user) {
154
+ handleError('User not found');
155
+ }
156
+ if (parsedDto.phoneNumber !== user.phoneNumber) {
157
+ handleError('Invalid email');
158
+ }
159
+ await this.authService.delete(user.externalId);
160
+ await this.userService.update(req.user.userId, {
161
+ status: UserStatus.DELETED,
162
+ email: user.externalId,
163
+ phoneNumber: user.externalId,
164
+ });
165
+ }
166
+ catch (error) {
167
+ handleError(error);
168
+ }
169
+ }
108
170
  };
171
+ __decorate([
172
+ Post('phone-login'),
173
+ ApiResponse({
174
+ status: 200,
175
+ description: 'loginOrCreate successful',
176
+ type: PhoneLoginResponseDto,
177
+ }),
178
+ __param(0, Body()),
179
+ __metadata("design:type", Function),
180
+ __metadata("design:paramtypes", [PhoneLoginRequestDto]),
181
+ __metadata("design:returntype", Promise)
182
+ ], UserController.prototype, "phoneLogin", null);
183
+ __decorate([
184
+ Post('phone-login-verify'),
185
+ ApiResponse({
186
+ status: 200,
187
+ description: 'loginOrCreate successful',
188
+ type: RegisterResponseDto,
189
+ }),
190
+ __param(0, Body()),
191
+ __metadata("design:type", Function),
192
+ __metadata("design:paramtypes", [PhoneLoginVerifyRequestDto]),
193
+ __metadata("design:returntype", Promise)
194
+ ], UserController.prototype, "phoneLoginVerify", null);
109
195
  __decorate([
110
196
  Post('signup'),
111
197
  ApiResponse({
@@ -169,6 +255,20 @@ __decorate([
169
255
  __metadata("design:paramtypes", [Object]),
170
256
  __metadata("design:returntype", Promise)
171
257
  ], UserController.prototype, "pushTest", null);
258
+ __decorate([
259
+ UseGuards(AuthGuard),
260
+ Post('delete'),
261
+ ApiResponse({
262
+ status: 200,
263
+ description: 'delete user successful',
264
+ type: GetUserResponseDto,
265
+ }),
266
+ __param(0, Request()),
267
+ __param(1, Body()),
268
+ __metadata("design:type", Function),
269
+ __metadata("design:paramtypes", [Object, DeleteUserRequestDto]),
270
+ __metadata("design:returntype", Promise)
271
+ ], UserController.prototype, "delete", null);
172
272
  UserController = __decorate([
173
273
  ApiTags('User'),
174
274
  Controller('user'),
@@ -1 +1 @@
1
- {"version":3,"file":"user.controller.js","sourceRoot":"/","sources":["user/user.controller.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Body,\n Controller,\n Get,\n Post,\n Request,\n UseGuards,\n} from '@nestjs/common';\nimport { JwtService } from '@nestjs/jwt';\nimport { ApiResponse, ApiTags } from '@nestjs/swagger';\nimport { OnboardingStatus, User } from '@prisma/client';\nimport { ExpoPushMessage } from 'expo-server-sdk';\nimport * as stytch from 'stytch';\n\nimport { AuthService } from '../auth/auth.service';\nimport { UserService } from './user.service';\nimport { GetUserResponseDto } from './dtos/get-user.response.dto';\nimport { UpdateUserRequestDto } from './dtos/update-user.request.dto';\nimport { RegisterResponseDto } from './dtos/register.response.dto';\nimport { RegisterRequestDto } from './dtos/register.request.dto';\nimport { PushService } from '../push/push.service';\nimport {\n cleanPhoneNumber,\n cleanString,\n cleanStringAndLowercase,\n handleError,\n utcOffsetToHours,\n} from '../utils';\nimport { AuthGuard } from '../guard';\nimport * as types from '../types';\n\n@ApiTags('User')\n@Controller('user')\nexport class UserController {\n constructor(\n private userService: UserService,\n private authService: AuthService,\n private pushService: PushService,\n private jwtService: JwtService,\n ) {}\n\n @Post('signup')\n @ApiResponse({\n status: 200,\n description: 'loginOrCreate successful',\n type: RegisterResponseDto,\n })\n async signup(@Body() dto: RegisterRequestDto): Promise<RegisterResponseDto> {\n const cleanedDTO: RegisterRequestDto = {\n email: cleanStringAndLowercase(dto.email),\n password: cleanString(dto.password),\n };\n\n const res: stytch.PasswordsCreateResponse =\n await this.authService.signup(cleanedDTO);\n\n if (!res) {\n handleError('Error creating user');\n }\n\n const user: User = await this.userService.create({\n email: cleanedDTO.email,\n externalId: res.user_id,\n });\n\n if (!user) {\n handleError('Error creating user');\n }\n\n const payload = { userId: user.id };\n const token: string = await this.jwtService.signAsync(payload);\n\n return {\n ...user,\n token,\n };\n }\n\n @Post('login')\n @ApiResponse({\n status: 200,\n description: 'loginOrCreate successful',\n type: RegisterResponseDto,\n })\n async login(@Body() dto: RegisterRequestDto): Promise<RegisterResponseDto> {\n const cleanedDTO: RegisterRequestDto = {\n email: cleanStringAndLowercase(dto.email),\n password: dto.password.trim(),\n };\n\n const res: boolean = await this.authService.login(cleanedDTO);\n\n if (!res) {\n handleError('Error logging in');\n }\n\n const user: User = await this.userService.findOneByEmail(cleanedDTO.email);\n\n if (!user) {\n handleError('Error logging in');\n }\n\n const payload = { userId: user.id };\n const token: string = await this.jwtService.signAsync(payload);\n\n return {\n ...user,\n token,\n };\n }\n\n @UseGuards(AuthGuard)\n @Get('self')\n @ApiResponse({\n status: 200,\n description: 'get self successful',\n type: GetUserResponseDto,\n })\n async getSelf(@Request() req: types.reqType): Promise<GetUserResponseDto> {\n try {\n const user: User = await this.userService.findOneByUserId(\n req.user.userId,\n );\n\n return user as GetUserResponseDto;\n } catch (error) {\n handleError(error);\n }\n }\n\n @UseGuards(AuthGuard)\n @Post('update')\n @ApiResponse({\n status: 200,\n description: 'update user successful',\n type: GetUserResponseDto,\n })\n async edit(\n @Body() dto: UpdateUserRequestDto,\n @Request() req: types.reqType,\n ): Promise<GetUserResponseDto> {\n try {\n const cleanDto: UpdateUserRequestDto = {\n phoneNumber: dto.phoneNumber\n ? cleanPhoneNumber(dto.phoneNumber)\n : undefined,\n fullName: dto.fullName\n ? cleanStringAndLowercase(dto.fullName)\n : undefined,\n pushToken: dto.pushToken ? cleanString(dto.pushToken) : undefined,\n tz: dto.tz ? utcOffsetToHours(dto.tz) : undefined,\n };\n\n const user: User = await this.userService.update(\n req.user.userId,\n cleanDto,\n );\n\n if (user.fullName && user.phoneNumber) {\n await this.userService.update(req.user.userId, {\n onboardingStatus: OnboardingStatus.COMPLETED,\n });\n }\n\n return user as GetUserResponseDto;\n } catch (error) {\n handleError(error);\n }\n }\n\n @UseGuards(AuthGuard)\n @Post('pushTest')\n @ApiResponse({\n status: 200,\n description: 'push test successful',\n })\n async pushTest(@Request() req: types.reqType): Promise<void> {\n try {\n const user: User = await this.userService.findOneByUserId(\n req.user.userId,\n );\n\n if (user.pushToken) {\n const messages: ExpoPushMessage[] = this.pushService.createMessages({\n body: 'Test push',\n pushTokens: [user.pushToken],\n });\n await this.pushService.sendMessages(messages);\n }\n } catch (error) {\n handleError(error);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"user.controller.js","sourceRoot":"/","sources":["user/user.controller.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,IAAI,EACJ,UAAU,EACV,GAAG,EACH,IAAI,EACJ,OAAO,EACP,SAAS,GACV,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAQ,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAKpE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,uBAAuB,EACvB,WAAW,EACX,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,KAAK,KAAK,MAAM,UAAU,CAAC;AAClC,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,WAAW,CAAC;AAIZ,IAAM,cAAc,GAApB,MAAM,cAAc;IACzB,YACU,WAAwB,EACxB,WAAwB,EACxB,WAAwB,EACxB,UAAsB;QAHtB,gBAAW,GAAX,WAAW,CAAa;QACxB,gBAAW,GAAX,WAAW,CAAa;QACxB,gBAAW,GAAX,WAAW,CAAa;QACxB,eAAU,GAAV,UAAU,CAAY;IAC7B,CAAC;IAQE,AAAN,KAAK,CAAC,UAAU,CACN,GAAyB;QAEjC,IAAI,CAAC;YACH,MAAM,SAAS,GAAyB,gBAAgB,CAAC,KAAK,CAC5D,GAAG,CACoB,CAAC;YAE1B,MAAM,WAAW,GAAW,gBAAgB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAEpE,MAAM,IAAI,GAAS,MAAM,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAC5D,SAAS,CAAC,WAAW,CACtB,CAAC;YAEF,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,OAAO,GAAS,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;oBAClD,WAAW;iBACZ,CAAC,CAAC;gBAEH,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,WAAW,CAAC,qBAAqB,CAAC,CAAC;gBACrC,CAAC;YAGH,CAAC;YAED,MAAM,GAAG,GACP,MAAM,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;YAEzD,OAAO;gBACL,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,WAAW;aACZ,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,WAAW,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAQK,AAAN,KAAK,CAAC,gBAAgB,CACZ,GAA+B;QAEvC,IAAI,CAAC;YACH,MAAM,SAAS,GACb,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAA+B,CAAC;YAElE,MAAM,GAAG,GACP,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC;gBACvC,QAAQ,EAAE,SAAS,CAAC,QAAQ;gBAC5B,IAAI,EAAE,SAAS,CAAC,IAAI;aACrB,CAAC,CAAC;YAEL,MAAM,IAAI,GAAS,MAAM,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAC5D,SAAS,CAAC,WAAW,CACtB,CAAC;YAEF,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE;gBACrC,UAAU,EAAE,GAAG,CAAC,OAAO;aACxB,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,KAAK,GAAW,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAE/D,uCACK,IAAI,KACP,KAAK,IACL;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,WAAW,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAQK,AAAN,KAAK,CAAC,MAAM,CAAS,GAAuB;QAC1C,MAAM,UAAU,GAAuB;YACrC,KAAK,EAAE,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC;YACzC,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;SACpC,CAAC;QAEF,MAAM,GAAG,GACP,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAE5C,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,WAAW,CAAC,qBAAqB,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,IAAI,GAAS,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YAC/C,WAAW,EAAE,GAAG,CAAC,OAAO;YACxB,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,UAAU,EAAE,GAAG,CAAC,OAAO;SACxB,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,WAAW,CAAC,qBAAqB,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,KAAK,GAAW,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAE/D,uCACK,IAAI,KACP,KAAK,IACL;IACJ,CAAC;IAQK,AAAN,KAAK,CAAC,KAAK,CAAS,GAAuB;QACzC,MAAM,UAAU,GAAuB;YACrC,KAAK,EAAE,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC;YACzC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE;SAC9B,CAAC;QAEF,MAAM,GAAG,GAAY,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAE9D,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,WAAW,CAAC,kBAAkB,CAAC,CAAC;QAClC,CAAC;QAED,MAAM,IAAI,GAAS,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAE3E,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,WAAW,CAAC,kBAAkB,CAAC,CAAC;QAClC,CAAC;QAED,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,KAAK,GAAW,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAE/D,uCACK,IAAI,KACP,KAAK,IACL;IACJ,CAAC;IASK,AAAN,KAAK,CAAC,OAAO,CAAY,GAAkB;QACzC,IAAI,CAAC;YACH,MAAM,IAAI,GAAS,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CACvD,GAAG,CAAC,IAAI,CAAC,MAAM,CAChB,CAAC;YAEF,OAAO,IAA0B,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,WAAW,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IASK,AAAN,KAAK,CAAC,IAAI,CACA,GAAyB,EACtB,GAAkB;QAE7B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAyB;gBACrC,WAAW,EAAE,GAAG,CAAC,WAAW;oBAC1B,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC;oBACnC,CAAC,CAAC,SAAS;gBACb,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACpB,CAAC,CAAC,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC;oBACvC,CAAC,CAAC,SAAS;gBACb,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;gBACjE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;aAClD,CAAC;YAEF,MAAM,IAAI,GAAS,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAC9C,GAAG,CAAC,IAAI,CAAC,MAAM,EACf,QAAQ,CACT,CAAC;YAEF,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACtC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE;oBAC7C,gBAAgB,EAAE,gBAAgB,CAAC,SAAS;iBAC7C,CAAC,CAAC;YACL,CAAC;YAED,OAAO,IAA0B,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,WAAW,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAQK,AAAN,KAAK,CAAC,QAAQ,CAAY,GAAkB;QAC1C,IAAI,CAAC;YACH,MAAM,IAAI,GAAS,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CACvD,GAAG,CAAC,IAAI,CAAC,MAAM,CAChB,CAAC;YAEF,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,MAAM,QAAQ,GAAsB,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC;oBAClE,IAAI,EAAE,WAAW;oBACjB,UAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;iBAC7B,CAAC,CAAC;gBACH,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,WAAW,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IASK,AAAN,KAAK,CAAC,MAAM,CACC,GAAkB,EACrB,GAAyB;QAEjC,IAAI,CAAC;YACH,MAAM,SAAS,GACb,gBACD,CAAC,KAAK,CAAC,GAAG,CAAyB,CAAC;YAErC,MAAM,IAAI,GAAS,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CACvD,GAAG,CAAC,IAAI,CAAC,MAAM,CAChB,CAAC;YAEF,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,WAAW,CAAC,gBAAgB,CAAC,CAAC;YAChC,CAAC;YAED,IAAI,SAAS,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC/C,WAAW,CAAC,eAAe,CAAC,CAAC;YAC/B,CAAC;YAED,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/C,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE;gBAC7C,MAAM,EAAE,UAAU,CAAC,OAAO;gBAC1B,KAAK,EAAE,IAAI,CAAC,UAAU;gBACtB,WAAW,EAAE,IAAI,CAAC,UAAU;aAC7B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,WAAW,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;CACF,CAAA;AA7QO;IANL,IAAI,CAAC,aAAa,CAAC;IACnB,WAAW,CAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,0BAA0B;QACvC,IAAI,EAAE,qBAAqB;KAC5B,CAAC;IAEC,WAAA,IAAI,EAAE,CAAA;;qCAAM,oBAAoB;;gDAmClC;AAQK;IANL,IAAI,CAAC,oBAAoB,CAAC;IAC1B,WAAW,CAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,0BAA0B;QACvC,IAAI,EAAE,mBAAmB;KAC1B,CAAC;IAEC,WAAA,IAAI,EAAE,CAAA;;qCAAM,0BAA0B;;sDA8BxC;AAQK;IANL,IAAI,CAAC,QAAQ,CAAC;IACd,WAAW,CAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,0BAA0B;QACvC,IAAI,EAAE,mBAAmB;KAC1B,CAAC;IACY,WAAA,IAAI,EAAE,CAAA;;qCAAM,kBAAkB;;4CA8B3C;AAQK;IANL,IAAI,CAAC,OAAO,CAAC;IACb,WAAW,CAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,0BAA0B;QACvC,IAAI,EAAE,mBAAmB;KAC1B,CAAC;IACW,WAAA,IAAI,EAAE,CAAA;;qCAAM,kBAAkB;;2CAyB1C;AASK;IAPL,SAAS,CAAC,SAAS,CAAC;IACpB,GAAG,CAAC,MAAM,CAAC;IACX,WAAW,CAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,qBAAqB;QAClC,IAAI,EAAE,kBAAkB;KACzB,CAAC;IACa,WAAA,OAAO,EAAE,CAAA;;;;6CAUvB;AASK;IAPL,SAAS,CAAC,SAAS,CAAC;IACpB,IAAI,CAAC,QAAQ,CAAC;IACd,WAAW,CAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,wBAAwB;QACrC,IAAI,EAAE,kBAAkB;KACzB,CAAC;IAEC,WAAA,IAAI,EAAE,CAAA;IACN,WAAA,OAAO,EAAE,CAAA;;qCADG,oBAAoB;;0CA8BlC;AAQK;IANL,SAAS,CAAC,SAAS,CAAC;IACpB,IAAI,CAAC,UAAU,CAAC;IAChB,WAAW,CAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,sBAAsB;KACpC,CAAC;IACc,WAAA,OAAO,EAAE,CAAA;;;;8CAgBxB;AASK;IAPL,SAAS,CAAC,SAAS,CAAC;IACpB,IAAI,CAAC,QAAQ,CAAC;IACd,WAAW,CAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,wBAAwB;QACrC,IAAI,EAAE,kBAAkB;KACzB,CAAC;IAEC,WAAA,OAAO,EAAE,CAAA;IACT,WAAA,IAAI,EAAE,CAAA;;6CAAM,oBAAoB;;4CA4BlC;AA1RU,cAAc;IAF1B,OAAO,CAAC,MAAM,CAAC;IACf,UAAU,CAAC,MAAM,CAAC;qCAGM,WAAW;QACX,WAAW;QACX,WAAW;QACZ,UAAU;GALrB,cAAc,CA2R1B","sourcesContent":["import {\n Body,\n Controller,\n Get,\n Post,\n Request,\n UseGuards,\n} from '@nestjs/common';\nimport { JwtService } from '@nestjs/jwt';\nimport { ApiResponse, ApiTags } from '@nestjs/swagger';\nimport { OnboardingStatus, User, UserStatus } from '@prisma/client';\nimport { ExpoPushMessage } from 'expo-server-sdk';\nimport * as stytch from 'stytch';\nimport { ZodObject } from 'zod';\n\nimport { AuthService } from '../auth';\nimport { UserService } from './user.service';\nimport {\n GetUserResponseDto,\n UpdateUserRequestDto,\n RegisterResponseDto,\n DeleteUserRequestDto,\n PhoneLoginRequestDto,\n PhoneLoginResponseDto,\n PhoneLoginVerifyRequestDto,\n RegisterRequestDto,\n} from './dtos';\nimport { PushService } from '../push';\nimport {\n cleanPhoneNumber,\n cleanString,\n cleanStringAndLowercase,\n handleError,\n utcOffsetToHours,\n} from '../utils';\nimport { AuthGuard } from '../guard';\nimport * as types from '../types';\nimport {\n deleteUserSchema,\n phoneLoginSchema,\n phoneLoginVerifySchema,\n} from './schemas';\n\n@ApiTags('User')\n@Controller('user')\nexport class UserController {\n constructor(\n private userService: UserService,\n private authService: AuthService,\n private pushService: PushService,\n private jwtService: JwtService,\n ) {}\n\n @Post('phone-login')\n @ApiResponse({\n status: 200,\n description: 'loginOrCreate successful',\n type: PhoneLoginResponseDto,\n })\n async phoneLogin(\n @Body() dto: PhoneLoginRequestDto,\n ): Promise<PhoneLoginResponseDto> {\n try {\n const parsedDto: PhoneLoginRequestDto = phoneLoginSchema.parse(\n dto,\n ) as PhoneLoginRequestDto;\n\n const phoneNumber: string = cleanPhoneNumber(parsedDto.phoneNumber);\n\n const user: User = await this.userService.findOneByPhoneNumber(\n parsedDto.phoneNumber,\n );\n\n if (!user) {\n const newUser: User = await this.userService.create({\n phoneNumber,\n });\n\n if (!newUser) {\n handleError('Error creating user');\n }\n\n // this is where you can do other user setup\n }\n\n const res: stytch.OTPsSmsLoginOrCreateResponse =\n await this.authService.phoneLoginOrCreate(phoneNumber);\n\n return {\n methodId: res.phone_id,\n phoneNumber,\n };\n } catch (error) {\n handleError(error);\n }\n }\n\n @Post('phone-login-verify')\n @ApiResponse({\n status: 200,\n description: 'loginOrCreate successful',\n type: RegisterResponseDto,\n })\n async phoneLoginVerify(\n @Body() dto: PhoneLoginVerifyRequestDto,\n ): Promise<RegisterResponseDto> {\n try {\n const parsedDto: PhoneLoginVerifyRequestDto =\n phoneLoginVerifySchema.parse(dto) as PhoneLoginVerifyRequestDto;\n\n const res: stytch.OTPsAuthenticateResponse =\n await this.authService.phoneAuthenticate({\n methodId: parsedDto.methodId,\n code: parsedDto.code,\n });\n\n const user: User = await this.userService.findOneByPhoneNumber(\n parsedDto.phoneNumber,\n );\n\n await this.userService.update(user.id, {\n externalId: res.user_id,\n });\n\n const payload = { userId: user.id };\n const token: string = await this.jwtService.signAsync(payload);\n\n return {\n ...user,\n token,\n };\n } catch (error) {\n handleError(error);\n }\n }\n\n @Post('signup')\n @ApiResponse({\n status: 200,\n description: 'loginOrCreate successful',\n type: RegisterResponseDto,\n })\n async signup(@Body() dto: RegisterRequestDto): Promise<RegisterResponseDto> {\n const cleanedDTO: RegisterRequestDto = {\n email: cleanStringAndLowercase(dto.email),\n password: cleanString(dto.password),\n };\n\n const res: stytch.PasswordsCreateResponse =\n await this.authService.signup(cleanedDTO);\n\n if (!res) {\n handleError('Error creating user');\n }\n\n const user: User = await this.userService.create({\n phoneNumber: res.user_id, // use phone number as placeholder\n email: cleanedDTO.email,\n externalId: res.user_id,\n });\n\n if (!user) {\n handleError('Error creating user');\n }\n\n const payload = { userId: user.id };\n const token: string = await this.jwtService.signAsync(payload);\n\n return {\n ...user,\n token,\n };\n }\n\n @Post('login')\n @ApiResponse({\n status: 200,\n description: 'loginOrCreate successful',\n type: RegisterResponseDto,\n })\n async login(@Body() dto: RegisterRequestDto): Promise<RegisterResponseDto> {\n const cleanedDTO: RegisterRequestDto = {\n email: cleanStringAndLowercase(dto.email),\n password: dto.password.trim(),\n };\n\n const res: boolean = await this.authService.login(cleanedDTO);\n\n if (!res) {\n handleError('Error logging in');\n }\n\n const user: User = await this.userService.findOneByEmail(cleanedDTO.email);\n\n if (!user) {\n handleError('Error logging in');\n }\n\n const payload = { userId: user.id };\n const token: string = await this.jwtService.signAsync(payload);\n\n return {\n ...user,\n token,\n };\n }\n\n @UseGuards(AuthGuard)\n @Get('self')\n @ApiResponse({\n status: 200,\n description: 'get self successful',\n type: GetUserResponseDto,\n })\n async getSelf(@Request() req: types.reqType): Promise<GetUserResponseDto> {\n try {\n const user: User = await this.userService.findOneByUserId(\n req.user.userId,\n );\n\n return user as GetUserResponseDto;\n } catch (error) {\n handleError(error);\n }\n }\n\n @UseGuards(AuthGuard)\n @Post('update')\n @ApiResponse({\n status: 200,\n description: 'update user successful',\n type: GetUserResponseDto,\n })\n async edit(\n @Body() dto: UpdateUserRequestDto,\n @Request() req: types.reqType,\n ): Promise<GetUserResponseDto> {\n try {\n const cleanDto: UpdateUserRequestDto = {\n phoneNumber: dto.phoneNumber\n ? cleanPhoneNumber(dto.phoneNumber)\n : undefined,\n fullName: dto.fullName\n ? cleanStringAndLowercase(dto.fullName)\n : undefined,\n pushToken: dto.pushToken ? cleanString(dto.pushToken) : undefined,\n tz: dto.tz ? utcOffsetToHours(dto.tz) : undefined,\n };\n\n const user: User = await this.userService.update(\n req.user.userId,\n cleanDto,\n );\n\n if (user.fullName && user.phoneNumber) {\n await this.userService.update(req.user.userId, {\n onboardingStatus: OnboardingStatus.COMPLETED,\n });\n }\n\n return user as GetUserResponseDto;\n } catch (error) {\n handleError(error);\n }\n }\n\n @UseGuards(AuthGuard)\n @Post('pushTest')\n @ApiResponse({\n status: 200,\n description: 'push test successful',\n })\n async pushTest(@Request() req: types.reqType): Promise<void> {\n try {\n const user: User = await this.userService.findOneByUserId(\n req.user.userId,\n );\n\n if (user.pushToken) {\n const messages: ExpoPushMessage[] = this.pushService.createMessages({\n body: 'Test push',\n pushTokens: [user.pushToken],\n });\n await this.pushService.sendMessages(messages);\n }\n } catch (error) {\n handleError(error);\n }\n }\n\n @UseGuards(AuthGuard)\n @Post('delete')\n @ApiResponse({\n status: 200,\n description: 'delete user successful',\n type: GetUserResponseDto,\n })\n async delete(\n @Request() req: types.reqType,\n @Body() dto: DeleteUserRequestDto,\n ): Promise<void> {\n try {\n const parsedDto: DeleteUserRequestDto = (\n deleteUserSchema as ZodObject<any>\n ).parse(dto) as DeleteUserRequestDto;\n\n const user: User = await this.userService.findOneByUserId(\n req.user.userId,\n );\n\n if (!user) {\n handleError('User not found');\n }\n\n if (parsedDto.phoneNumber !== user.phoneNumber) {\n handleError('Invalid email');\n }\n\n await this.authService.delete(user.externalId);\n await this.userService.update(req.user.userId, {\n status: UserStatus.DELETED,\n email: user.externalId,\n phoneNumber: user.externalId,\n });\n } catch (error) {\n handleError(error);\n }\n }\n}\n"]}
@@ -6,6 +6,7 @@ export declare class UserService {
6
6
  constructor(prisma: PrismaService);
7
7
  create(data: Prisma.UserCreateInput): Promise<User>;
8
8
  findOneByEmail(email: string): Promise<User>;
9
+ findOneByPhoneNumber(phoneNumber: string): Promise<User>;
9
10
  findOneByUserId(userId: string): Promise<User>;
10
11
  findMany(): Promise<User[]>;
11
12
  findManyByTz(tz: number): Promise<User[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"user.service.d.ts","sourceRoot":"/","sources":["user/user.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,qBACa,WAAW;IAGV,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;gBAE3C,MAAM,EAAE,aAAa;IAEnC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAQnD,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5C,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ9C,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAM3B,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAUzC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;CAQtE"}
1
+ {"version":3,"file":"user.service.d.ts","sourceRoot":"/","sources":["user/user.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,qBACa,WAAW;IAGV,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;gBAE3C,MAAM,EAAE,aAAa;IAEnC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAQnD,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5C,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQxD,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ9C,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAM3B,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAUzC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;CAQtE"}
@@ -19,6 +19,12 @@ let UserService = UserService_1 = class UserService {
19
19
  where: { email },
20
20
  });
21
21
  }
22
+ async findOneByPhoneNumber(phoneNumber) {
23
+ this.logger.debug('findOneByPhoneNumber');
24
+ return this.prisma.user.findUnique({
25
+ where: { phoneNumber },
26
+ });
27
+ }
22
28
  async findOneByUserId(userId) {
23
29
  this.logger.debug('findOneByUserId');
24
30
  return this.prisma.user.findUnique({
@@ -1 +1 @@
1
- {"version":3,"file":"user.service.js","sourceRoot":"/","sources":["user/user.service.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAGpD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAGlD,IAAM,WAAW,mBAAjB,MAAM,WAAW;IAGtB,YAAoB,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;QAFxB,WAAM,GAAW,IAAI,MAAM,CAAC,aAAW,CAAC,IAAI,CAAC,CAAC;IAEnB,CAAC;IAE7C,KAAK,CAAC,MAAM,CAAC,IAA4B;QACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAE5B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YAC7B,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,KAAa;QAChC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAEpC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;YACjC,KAAK,EAAE,EAAE,KAAK,EAAE;SACjB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAAc;QAClC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAErC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;YACjC,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;SACtB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAE9B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAAU;QAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAElC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC/B,KAAK,EAAE;gBACL,EAAE;aACH;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,IAA4B;QACnD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAE5B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YAC7B,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,IAAI;SACL,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AArDY,WAAW;IADvB,UAAU,EAAE;qCAIiB,aAAa;GAH9B,WAAW,CAqDvB","sourcesContent":["import { Injectable, Logger } from '@nestjs/common';\nimport { Prisma, User } from '@prisma/client';\n\nimport { PrismaService } from '../prisma/prisma.service';\n\n@Injectable()\nexport class UserService {\n private readonly logger: Logger = new Logger(UserService.name);\n\n constructor(private prisma: PrismaService) {}\n\n async create(data: Prisma.UserCreateInput): Promise<User> {\n this.logger.debug('create');\n\n return this.prisma.user.create({\n data,\n });\n }\n\n async findOneByEmail(email: string): Promise<User> {\n this.logger.debug('findOneByEmail');\n\n return this.prisma.user.findUnique({\n where: { email },\n });\n }\n\n async findOneByUserId(userId: string): Promise<User> {\n this.logger.debug('findOneByUserId');\n\n return this.prisma.user.findUnique({\n where: { id: userId },\n });\n }\n\n async findMany(): Promise<User[]> {\n this.logger.debug('findMany');\n\n return this.prisma.user.findMany();\n }\n\n async findManyByTz(tz: number): Promise<User[]> {\n this.logger.debug('findManyByTz');\n\n return this.prisma.user.findMany({\n where: {\n tz,\n },\n });\n }\n\n async update(id: string, data: Prisma.UserUpdateInput): Promise<User> {\n this.logger.debug('update');\n\n return this.prisma.user.update({\n where: { id },\n data,\n });\n }\n}\n"]}
1
+ {"version":3,"file":"user.service.js","sourceRoot":"/","sources":["user/user.service.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAGpD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAGlD,IAAM,WAAW,mBAAjB,MAAM,WAAW;IAGtB,YAAoB,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;QAFxB,WAAM,GAAW,IAAI,MAAM,CAAC,aAAW,CAAC,IAAI,CAAC,CAAC;IAEnB,CAAC;IAE7C,KAAK,CAAC,MAAM,CAAC,IAA4B;QACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAE5B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YAC7B,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,KAAa;QAChC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAEpC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;YACjC,KAAK,EAAE,EAAE,KAAK,EAAE;SACjB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,WAAmB;QAC5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAE1C,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;YACjC,KAAK,EAAE,EAAE,WAAW,EAAE;SACvB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAAc;QAClC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAErC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;YACjC,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;SACtB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAE9B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAAU;QAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAElC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC/B,KAAK,EAAE;gBACL,EAAE;aACH;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,IAA4B;QACnD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAE5B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YAC7B,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,IAAI;SACL,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AA7DY,WAAW;IADvB,UAAU,EAAE;qCAIiB,aAAa;GAH9B,WAAW,CA6DvB","sourcesContent":["import { Injectable, Logger } from '@nestjs/common';\nimport { Prisma, User } from '@prisma/client';\n\nimport { PrismaService } from '../prisma/prisma.service';\n\n@Injectable()\nexport class UserService {\n private readonly logger: Logger = new Logger(UserService.name);\n\n constructor(private prisma: PrismaService) {}\n\n async create(data: Prisma.UserCreateInput): Promise<User> {\n this.logger.debug('create');\n\n return this.prisma.user.create({\n data,\n });\n }\n\n async findOneByEmail(email: string): Promise<User> {\n this.logger.debug('findOneByEmail');\n\n return this.prisma.user.findUnique({\n where: { email },\n });\n }\n\n async findOneByPhoneNumber(phoneNumber: string): Promise<User> {\n this.logger.debug('findOneByPhoneNumber');\n\n return this.prisma.user.findUnique({\n where: { phoneNumber },\n });\n }\n\n async findOneByUserId(userId: string): Promise<User> {\n this.logger.debug('findOneByUserId');\n\n return this.prisma.user.findUnique({\n where: { id: userId },\n });\n }\n\n async findMany(): Promise<User[]> {\n this.logger.debug('findMany');\n\n return this.prisma.user.findMany();\n }\n\n async findManyByTz(tz: number): Promise<User[]> {\n this.logger.debug('findManyByTz');\n\n return this.prisma.user.findMany({\n where: {\n tz,\n },\n });\n }\n\n async update(id: string, data: Prisma.UserUpdateInput): Promise<User> {\n this.logger.debug('update');\n\n return this.prisma.user.update({\n where: { id },\n data,\n });\n }\n}\n"]}
@@ -7,5 +7,7 @@ export declare const schemaPatterns: {
7
7
  pushToken: z.ZodString;
8
8
  tz: z.ZodNumber;
9
9
  date: z.ZodString;
10
+ code: z.ZodString;
11
+ methodId: z.ZodString;
10
12
  };
11
13
  //# sourceMappingURL=schema.util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.util.d.ts","sourceRoot":"/","sources":["utils/schema.util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,cAAc;;;;;;;;CAQ1B,CAAC"}
1
+ {"version":3,"file":"schema.util.d.ts","sourceRoot":"/","sources":["utils/schema.util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,cAAc;;;;;;;;;;CAU1B,CAAC"}
@@ -7,5 +7,7 @@ export const schemaPatterns = {
7
7
  pushToken: z.string().min(1).max(500).trim(),
8
8
  tz: z.number().int().min(-10000).max(10000),
9
9
  date: z.string().date(),
10
+ code: z.string().length(6).trim(),
11
+ methodId: z.string().min(1).max(500).trim(),
10
12
  };
11
13
  //# sourceMappingURL=schema.util.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.util.js","sourceRoot":"/","sources":["utils/schema.util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE;IAC9D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;IAC5C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE;IAC7C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;IAC3C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;IAC5C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;IAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;CACxB,CAAC","sourcesContent":["import { z } from 'zod';\n\nexport const schemaPatterns = {\n email: z.string().email().max(100).min(1).toLowerCase().trim(),\n password: z.string().min(10).max(100).trim(),\n phoneNumber: z.string().min(7).max(20).trim(),\n fullName: z.string().min(2).max(100).trim(),\n pushToken: z.string().min(1).max(500).trim(),\n tz: z.number().int().min(-10000).max(10000),\n date: z.string().date(),\n};\n"]}
1
+ {"version":3,"file":"schema.util.js","sourceRoot":"/","sources":["utils/schema.util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE;IAC9D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;IAC5C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE;IAC7C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;IAC3C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;IAC5C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;IAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IACvB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;IACjC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;CAC5C,CAAC","sourcesContent":["import { z } from 'zod';\n\nexport const schemaPatterns = {\n email: z.string().email().max(100).min(1).toLowerCase().trim(),\n password: z.string().min(10).max(100).trim(),\n phoneNumber: z.string().min(7).max(20).trim(),\n fullName: z.string().min(2).max(100).trim(),\n pushToken: z.string().min(1).max(500).trim(),\n tz: z.number().int().min(-10000).max(10000),\n date: z.string().date(),\n code: z.string().length(6).trim(),\n methodId: z.string().min(1).max(500).trim(),\n};\n"]}