Skip to content

Commit

Permalink
Develop (#8)
Browse files Browse the repository at this point in the history
* development init

* Update README.md

Signed-off-by: gitworkflows <[email protected]>

---------

Signed-off-by: gitworkflows <[email protected]>
Co-authored-by: gitworkflows <[email protected]>
  • Loading branch information
FortiShield and gitworkflows authored May 15, 2024
1 parent 506064c commit 0d44c15
Show file tree
Hide file tree
Showing 256 changed files with 10,366 additions and 9,609 deletions.
50 changes: 50 additions & 0 deletions .all-contributorsrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
{
"projectName": "nestjs-template",
"projectOwner": "khulnasoft",
"files": [
"README.md"
],
"commitType": "docs",
"commitConvention": "angular",
"contributorsPerLine": 7,
"contributors": [
{
"login": "Shchepotin",
"name": "Vladyslav Shchepotin",
"avatar_url": "https://avatars.githubusercontent.com/u/6001723?v=4",
"profile": "https://github.com/Shchepotin",
"contributions": [
"maintenance",
"doc",
"code"
]
},
{
"login": "SergeiLomako",
"name": "SergeiLomako",
"avatar_url": "https://avatars.githubusercontent.com/u/31205374?v=4",
"profile": "https://github.com/SergeiLomako",
"contributions": [
"code"
]
},
{
"login": "ElenVlass",
"name": "Elena Vlasenko",
"avatar_url": "https://avatars.githubusercontent.com/u/72293912?v=4",
"profile": "https://github.com/ElenVlass",
"contributions": [
"doc"
]
},
{
"login": "sars",
"name": "Rodion",
"avatar_url": "https://avatars.githubusercontent.com/u/226194?v=4",
"profile": "http://khulnasoft.com",
"contributions": [
"business"
]
}
]
}
4 changes: 4 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
/node_modules
/.data
/dist
/files
25 changes: 22 additions & 3 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,43 @@ module.exports = {
parser: '@typescript-eslint/parser',
parserOptions: {
project: 'tsconfig.json',
tsconfigRootDir: __dirname,
sourceType: 'module',
},
plugins: ['@typescript-eslint/eslint-plugin'],
extends: [
'plugin:@typescript-eslint/eslint-recommended',
'plugin:@typescript-eslint/recommended',
'prettier',
'prettier/@typescript-eslint',
'plugin:prettier/recommended',
],
root: true,
env: {
node: true,
jest: true,
},
ignorePatterns: ['.eslintrc.js'],
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',
'no-unused-vars': 'off',
'@typescript-eslint/no-unused-vars': ['error'],
'require-await': 'off',
'@typescript-eslint/require-await': 'error',
'@typescript-eslint/no-floating-promises': 'error',
'no-restricted-syntax': [
'error',
{
selector:
'CallExpression[callee.object.name=configService][callee.property.name=/^(get|getOrThrow)$/]:not(:has([arguments.1] Property[key.name=infer][value.value=true])), CallExpression[callee.object.property.name=configService][callee.property.name=/^(get|getOrThrow)$/]:not(:has([arguments.1] Property[key.name=infer][value.value=true]))',
message:
'Add "{ infer: true }" to configService.get() for correct typechecking. Example: configService.get("database.port", { infer: true })',
},
{
selector:
'CallExpression[callee.name=it][arguments.0.value!=/^should/]',
message: '"it" should start with "should"',
},
],
},
};
31 changes: 31 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: Shchepotin

---

**Describe the bug**
A clear and concise description of what the bug is.

**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Send '....'
4. See error

**Expected behavior**
A clear and concise description of what you expected to happen.

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Desktop (please complete the following information):**
- OS: [e.g. Windows]
- NodeJS Version [e.g. 18.16.0]
- Database [e.g. PostgreSQL]

**Additional context**
Add any other context about the problem here.
41 changes: 41 additions & 0 deletions .github/workflows/docker-e2e.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: NestJS API CI

on:
push:
branches: [main]
pull_request:
branches: [main]

jobs:
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

# <database-relational-block>
- name: Run e2e tests for NestJS with TypeORM
id: relational
run: docker compose -f docker-compose.relational.ci.yaml --env-file env-example-relational -p ci-relational up --build --exit-code-from api

- name: Copy prod.log from container to host
if: ${{ failure() && steps.relational.conclusion == 'failure' }}
run: docker cp ci-relational-api-1:/usr/src/app/prod.log .
# </database-relational-block>

# <database-document-block>
- name: Run e2e tests for NestJS with Mongoose
id: document
run: docker compose -f docker-compose.document.ci.yaml --env-file env-example-document -p ci-document up --build --exit-code-from api

- name: Copy prod.log from container to host
if: ${{ failure() && steps.document.conclusion == 'failure' }}
run: docker cp ci-document-api-1:/usr/src/app/prod.log .
# </database-document-block>

- name: Upload prod.log to artifacts for debugging
if: failure()
uses: actions/upload-artifact@v4
with:
name: prod-logs
path: prod.log
30 changes: 0 additions & 30 deletions .github/workflows/npm-ci.yml

This file was deleted.

6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
logs
*.log
npm-debug.log*
pnpm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
Expand All @@ -32,3 +33,8 @@ lerna-debug.log*
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json

.data
/files
.env
/ormconfig.json
1 change: 1 addition & 0 deletions .husky/commit-msg
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
npx commitlint --edit
2 changes: 2 additions & 0 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
npm run lint
npm run test -- --passWithNoTests
3 changes: 3 additions & 0 deletions .hygen.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module.exports = {
templates: `${__dirname}/.hygen`,
};
21 changes: 21 additions & 0 deletions .hygen/seeds/create-document/module.ejs.t
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
to: src/database/seeds/document/<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>/<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>-seed.module.ts
---
import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
import { <%= name %>Schema, <%= name %>SchemaClass } from '../../../../<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/infrastructure/persistence/document/entities/<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.schema';
import { <%= name %>SeedService } from './<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>-seed.service';

@Module({
imports: [
MongooseModule.forFeature([
{
name: <%= name %>SchemaClass.name,
schema: <%= name %>Schema,
},
]),
],
providers: [<%= name %>SeedService],
exports: [<%= name %>SeedService],
})
export class <%= name %>SeedModule {}
6 changes: 6 additions & 0 deletions .hygen/seeds/create-document/run-seed-import.ejs.t
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
inject: true
to: src/database/seeds/document/run-seed.ts
after: \@nestjs\/core
---
import { <%= name %>SeedService } from './<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>/<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>-seed.service';
6 changes: 6 additions & 0 deletions .hygen/seeds/create-document/run-seed-service.ejs.t
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
inject: true
to: src/database/seeds/document/run-seed.ts
before: close
---
await app.get(<%= name %>SeedService).run();
6 changes: 6 additions & 0 deletions .hygen/seeds/create-document/seed-module-import.ejs.t
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
inject: true
to: src/database/seeds/document/seed.module.ts
before: \@Module
---
import { <%= name %>SeedModule } from './<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>/<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>-seed.module';
6 changes: 6 additions & 0 deletions .hygen/seeds/create-document/seed-module.ejs.t
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
inject: true
to: src/database/seeds/document/seed.module.ts
after: imports
---
<%= name %>SeedModule,
24 changes: 24 additions & 0 deletions .hygen/seeds/create-document/service.ejs.t
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
to: src/database/seeds/document/<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>/<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>-seed.service.ts
---
import { Injectable } from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose';
import { Model } from 'mongoose';
import { <%= name %>SchemaClass } from '../../../../<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/infrastructure/persistence/document/entities/<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.schema';

@Injectable()
export class <%= name %>SeedService {
constructor(
@InjectModel(<%= name %>SchemaClass.name)
private readonly model: Model<<%= name %>SchemaClass>,
) {}

async run() {
const count = await this.model.countDocuments();

if (count === 0) {
const data = new this.model({});
await data.save();
}
}
}
14 changes: 14 additions & 0 deletions .hygen/seeds/create-relational/module.ejs.t
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
to: src/database/seeds/relational/<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>/<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>-seed.module.ts
---
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { <%= name %>Entity } from '../../../../<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/infrastructure/persistence/relational/entities/<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.entity';
import { <%= name %>SeedService } from './<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>-seed.service';

@Module({
imports: [TypeOrmModule.forFeature([<%= name %>Entity])],
providers: [<%= name %>SeedService],
exports: [<%= name %>SeedService],
})
export class <%= name %>SeedModule {}
6 changes: 6 additions & 0 deletions .hygen/seeds/create-relational/run-seed-import.ejs.t
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
inject: true
to: src/database/seeds/relational/run-seed.ts
after: \@nestjs\/core
---
import { <%= name %>SeedService } from './<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>/<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>-seed.service';
6 changes: 6 additions & 0 deletions .hygen/seeds/create-relational/run-seed-service.ejs.t
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
inject: true
to: src/database/seeds/relational/run-seed.ts
before: close
---
await app.get(<%= name %>SeedService).run();
6 changes: 6 additions & 0 deletions .hygen/seeds/create-relational/seed-module-import.ejs.t
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
inject: true
to: src/database/seeds/relational/seed.module.ts
before: \@Module
---
import { <%= name %>SeedModule } from './<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>/<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>-seed.module';
6 changes: 6 additions & 0 deletions .hygen/seeds/create-relational/seed-module.ejs.t
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
inject: true
to: src/database/seeds/relational/seed.module.ts
after: imports
---
<%= name %>SeedModule,
23 changes: 23 additions & 0 deletions .hygen/seeds/create-relational/service.ejs.t
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
to: src/database/seeds/relational/<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>/<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>-seed.service.ts
---
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { <%= name %>Entity } from '../../../../<%= h.inflection.transform(name, ['pluralize', 'underscore', 'dasherize']) %>/infrastructure/persistence/relational/entities/<%= h.inflection.transform(name, ['underscore', 'dasherize']) %>.entity';
import { Repository } from 'typeorm';

@Injectable()
export class <%= name %>SeedService {
constructor(
@InjectRepository(<%= name %>Entity)
private repository: Repository<<%= name %>Entity>,
) {}

async run() {
const count = await this.repository.count();

if (count === 0) {
await this.repository.save(this.repository.create({}));
}
}
}
Loading

0 comments on commit 0d44c15

Please sign in to comment.