diff --git a/.eslintrc.js b/.eslintrc.js index 0fbd99b..840c917 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,25 +1,26 @@ module.exports = { - parser: '@typescript-eslint/parser', - parserOptions: { - project: 'tsconfig.json', - sourceType: 'module', - }, - plugins: ['@typescript-eslint/eslint-plugin'], - extends: [ - 'plugin:@typescript-eslint/eslint-recommended', - 'plugin:@typescript-eslint/recommended', - 'prettier', - 'prettier/@typescript-eslint', - ], - root: true, - env: { - node: true, - jest: true, - }, - rules: { - '@typescript-eslint/interface-name-prefix': 'off', - '@typescript-eslint/explicit-function-return-type': 'off', - '@typescript-eslint/explicit-module-boundary-types': 'off', - '@typescript-eslint/no-explicit-any': 'off', - }, -}; + parser: '@typescript-eslint/parser', + parserOptions: { + project: 'tsconfig.json', + sourceType: 'module', + }, + plugins: ['@typescript-eslint/eslint-plugin'], + extends: [ + 'plugin:@typescript-eslint/eslint-recommended', + 'plugin:@typescript-eslint/recommended', + 'prettier', + 'prettier/@typescript-eslint', + ], + root: true, + env: { + node: true, + jest: true, + }, + rules: { + '@typescript-eslint/interface-name-prefix': 'off', + '@typescript-eslint/explicit-function-return-type': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-namespace': 'off', + }, +} diff --git a/.gitignore b/.gitignore index 2a6aa11..8575e19 100644 --- a/.gitignore +++ b/.gitignore @@ -41,3 +41,4 @@ lerna-debug.log* ./milord ./milord/* .vscode/settings.json +./documentation \ No newline at end of file diff --git a/documentation/classes/User.html b/documentation/classes/User.html new file mode 100644 index 0000000..dabfbf7 --- /dev/null +++ b/documentation/classes/User.html @@ -0,0 +1,226 @@ + + +
+ + ++
+ src/domain/users/entities/user.entity.ts
+
+
+ BaseEntity
+
+ Properties+ |
+
+
|
+
+ + + id + + + | +
+ Type : number
+
+ |
+
+ Decorators :
+ +
+ @PrimaryGeneratedColumn()
+ |
+
+ Defined in src/domain/users/entities/user.entity.ts:6
+ |
+
import { BaseEntity, Entity, PrimaryGeneratedColumn } from 'typeorm'
+
+@Entity('users')
+export class User extends BaseEntity {
+ @PrimaryGeneratedColumn()
+ id: number
+}
+
+ +
+ src/domain/users/classes/user-creator.ts
+
+ Properties+ |
+
+
|
+
+ Methods+ |
+
+
|
+
+ + + Private + payload + + + | +
+ Type : UserPaylod
+
+ |
+
+ Defined in src/domain/users/classes/user-creator.ts:10
+ |
+
+ + + Private + userRepository + + + | +
+ Type : Repository<UserPaylod>
+
+ |
+
+ Defined in src/domain/users/classes/user-creator.ts:9
+ |
+
+ + + Public + Async + save + + + | +
+
+ save()
+ |
+
+ Defined in src/domain/users/classes/user-creator.ts:21
+ |
+
+
+
+ Returns :
+ unknown
+
+ |
+
+ + + Public + setData + + + | +||||||
+
+ setData(paylod: UserPaylod)
+ |
+ ||||||
+ Defined in src/domain/users/classes/user-creator.ts:12
+ |
+ ||||||
+
+
+ Parameters :
+
+
+
+
+ Returns :
+ this
+
+
+
+
+ |
+
+ + + Public + setRepository + + + | +||||||
+
+ setRepository(repository: Repository<UserPaylod>)
+ |
+ ||||||
+ Defined in src/domain/users/classes/user-creator.ts:16
+ |
+ ||||||
+
+
+ Parameters :
+
+
+
+
+ Returns :
+ this
+
+
+
+
+ |
+
import { Repository } from 'typeorm'
+
+interface UserPaylod {
+ name: string
+ email: string
+}
+
+export class UserCreator {
+ private userRepository: Repository<UserPaylod>
+ private payload: UserPaylod
+
+ public setData(paylod: UserPaylod) {
+ this.payload = paylod
+ return this
+ }
+ public setRepository(repository: Repository<UserPaylod>) {
+ this.userRepository = repository
+ return this
+ }
+
+ public async save() {
+ return this.payload
+ }
+}
+
+ File | +Type | +Identifier | +Statements | +
---|---|---|---|
+ + src/app.module.ts + | +variable | +imports | ++ 0 % + (0/1) + | +
+ + src/config/index.ts + | +variable | +$config | ++ 0 % + (0/1) + | +
+ + src/config/index.ts + | +variable | +getDatabaseConfig | ++ 0 % + (0/1) + | +
+ + src/core/interfaces/entities/user.interface.ts + | +interface | +IUser | ++ 85 % + (6/7) + | +
+ + src/core/namespaces/users.namespace.ts + | +interface | +TUser | ++ 100 % + (7/7) + | +
+ + src/domain/users/classes/user-creator.ts + | +class | +UserCreator | ++ 0 % + (0/6) + | +
+ + src/domain/users/classes/user-creator.ts + | +interface | +UserPaylod | ++ 0 % + (0/3) + | +
+ + src/domain/users/entities/index.ts + | +variable | +USERS_ENTITIES | ++ 0 % + (0/1) + | +
+ + src/domain/users/entities/user.entity.ts + | +class | +User | ++ 0 % + (0/2) + | +
+ + src/domain/users/services/users.service.ts + | +injectable | +UsersService | ++ 50 % + (1/2) + | +
+ + src/libs/database/helpers/get-repository.helper.ts + | +variable | +getRepositoryHelper | ++ 0 % + (0/1) + | +
+ + src/libs/database/interfaces/database-module-params.interfaces.ts + | +interface | +IDatabaseAsyncModuleParams | ++ 0 % + (0/4) + | +
+ + src/main.ts + | +function | +bootstrap | ++ 0 % + (0/1) + | +
A progressive Node.js framework for building efficient and scalable server-side applications, heavily inspired by Angular.
+ + + +Nest framework TypeScript starter repository.
+$ npm install
# development
+$ npm run start
+
+# watch mode
+$ npm run start:dev
+
+# production mode
+$ npm run start:prod
# unit tests
+$ npm run test
+
+# e2e tests
+$ npm run test:e2e
+
+# test coverage
+$ npm run test:cov
Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please read more here.
+Nest is MIT licensed.
+ + + + + + + + + + + + + + + + + + + ++
+ src/domain/users/services/users.service.ts
+
+ Methods+ |
+
+
|
+
+ + + Public + Async + getUser + + + | +||||||
+
+ getUser(id: number)
+ |
+ ||||||
+ + | +||||||
+ Метод для отримання користувача по його ідентифікатору +
+ Parameters :
+
+
+
+
+ Returns :
+ Promise<any>
+
+
+
+ Обект користувача + + |
+
import { Injectable } from '@nestjs/common'
+import { UserCreator } from '../classes/user-creator'
+
+@Injectable()
+export class UsersService {
+ /**
+ * Метод для отримання користувача по його ідентифікатору
+ * @id Ідентифікатор користувача
+ * @returns Обект користувача
+ */
+ public async getUser(id: number): Promise<any> {
+ const userCreator = new UserCreator()
+
+ userCreator.setData({
+ name: 'Vitalik',
+ email: 'ebas@mail.ru',
+ })
+
+ const user = await userCreator.save()
+
+ return user
+ }
+}
+
+ +
+ src/libs/database/interfaces/database-module-params.interfaces.ts
+
+ Properties+ |
+
+
|
+
+ + imports + + + + + | +
+ imports:
+ |
+
+ Type : any[]
+
+ |
+
+ Optional + | +
+ + inject + + + + + | +
+ inject:
+ |
+
+ Type : any[]
+
+ |
+
+ + useFactory + + + + + | +
+ useFactory:
+ |
+
+ Type : function
+
+ |
+
import { ConnectionOptions } from 'typeorm';
+
+export interface IDatabaseAsyncModuleParams {
+ imports?: any[];
+ useFactory: (...args: any[]) => Promise<Partial<ConnectionOptions>>;
+ inject: any[];
+}
+
+ +
+ src/core/interfaces/entities/user.interface.ts
+
+ Properties+ |
+
+
|
+
+ + email + + + + + | +
+ email:
+ |
+
+ Type : string
+
+ |
+
+ Почта користувача + |
+
+ + id + + + + + | +
+ id:
+ |
+
+ Type : number
+
+ |
+
+ Ідентифікатор користувача + |
+
+ + password + + + + + | +
+ password:
+ |
+
+ Type : string
+
+ |
+
+ Пароль в зашифрованому вигляді + |
+
+ + passwordSalt + + + + + | +
+ passwordSalt:
+ |
+
+ Type : string
+
+ |
+
+ Соль для шифрування паролю + |
+
+ + phoneNumber + + + + + | +
+ phoneNumber:
+ |
+
+ Type : string
+
+ |
+
+ Робочий номер телефону по якому відбуваеться авторизація + |
+
+ + role + + + + + | +
+ role:
+ |
+
+ Type : Role
+
+ |
+
+ Роль користувача, можливі значення Role.Admin, Role.User + |
+
import { Role } from 'src/core/enums'
+
+/**
+ * Базовий інтерфейс користувача
+ */
+export namespace Users {
+ export interface IUser {
+ /**
+ * Ідентифікатор користувача
+ */
+ id: number
+
+ /**
+ * Роль користувача, можливі значення Role.Admin, Role.User
+ */
+ role: Role
+
+ /**
+ * Почта користувача
+ */
+ email: string
+
+ /**
+ * Робочий номер телефону по якому відбуваеться авторизація
+ */
+ phoneNumber: string
+
+ /**
+ * Пароль в зашифрованому вигляді
+ */
+ password: string
+
+ /**
+ * Соль для шифрування паролю
+ */
+ passwordSalt: string
+ }
+}
+
+ +
+ src/core/namespaces/users.namespace.ts
+
+
+
Базовий інтерфейс користувача
+ + + + +
+ Properties+ |
+
+
|
+
+ + email + + + + + | +
+ email:
+ |
+
+ Type : string
+
+ |
+
+ Почта користувача + |
+
+ + id + + + + + | +
+ id:
+ |
+
+ Type : number
+
+ |
+
+ Ідентифікатор користувача + |
+
+ + password + + + + + | +
+ password:
+ |
+
+ Type : string
+
+ |
+
+ Пароль в зашифрованому вигляді + |
+
+ + passwordSalt + + + + + | +
+ passwordSalt:
+ |
+
+ Type : string
+
+ |
+
+ Соль для шифрування паролю + |
+
+ + phoneNumber + + + + + | +
+ phoneNumber:
+ |
+
+ Type : string
+
+ |
+
+ Робочий номер телефону по якому відбуваеться авторизація + |
+
+ + role + + + + + | +
+ role:
+ |
+
+ Type : TRole
+
+ |
+
+ Роль користувача, можливі значення Role.Admin, Role.User + |
+
export namespace Users {
+ /**
+ * Роль користувача
+ */
+ export enum TRole {
+ /**
+ * Адміністратор
+ */
+ Admin = 'a',
+
+ /**
+ * Звичайни користувач
+ */
+ User = 'u',
+ }
+
+ /**
+ * Базовий інтерфейс користувача
+ */
+ export interface TUser {
+ /**
+ * Ідентифікатор користувача
+ */
+ id: number
+
+ /**
+ * Роль користувача, можливі значення Role.Admin, Role.User
+ */
+ role: TRole
+
+ /**
+ * Почта користувача
+ */
+ email: string
+
+ /**
+ * Робочий номер телефону по якому відбуваеться авторизація
+ */
+ phoneNumber: string
+
+ /**
+ * Пароль в зашифрованому вигляді
+ */
+ password: string
+
+ /**
+ * Соль для шифрування паролю
+ */
+ passwordSalt: string
+ }
+}
+
+ +
+ src/domain/users/classes/user-creator.ts
+
+ Properties+ |
+
+ + | +
+ + email + + + + + | +
+ email:
+ |
+
+ Type : string
+
+ |
+
+ + name + + + + + | +
+ name:
+ |
+
+ Type : string
+
+ |
+
import { Repository } from 'typeorm'
+
+interface UserPaylod {
+ name: string
+ email: string
+}
+
+export class UserCreator {
+ private userRepository: Repository<UserPaylod>
+ private payload: UserPaylod
+
+ public setData(paylod: UserPaylod) {
+ this.payload = paylod
+ return this
+ }
+ public setRepository(repository: Repository<UserPaylod>) {
+ this.userRepository = repository
+ return this
+ }
+
+ public async save() {
+ return this.payload
+ }
+}
+
+