Skip to content

Commit

Permalink
Merge pull request #34 from Selecro/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
Szotkowski authored Sep 22, 2023
2 parents dabc975 + 950c4ee commit 80d07d1
Show file tree
Hide file tree
Showing 24 changed files with 945 additions and 232 deletions.
63 changes: 37 additions & 26 deletions .github/workflows/continuous-deployment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,23 @@ jobs:
- name: Set deployment variables
run: |
if [ "${{ github.ref }}" = "refs/heads/dev" ]; then
echo "EXTPORT=3002" >> $GITHUB_ENV
echo "IMAGE=backend-dev" >> $GITHUB_ENV
echo "VAULT_PORT=8202" >> $GITHUB_ENV
echo "SQLDATABASE=selecro_dev" >> $GITHUB_ENV
echo "DEFAULT_PORT=${{ secrets.DEFAULT_PORT_DEV }}" >> $GITHUB_ENV
echo "SQL_DATABASE=${{ secrets.SQL_DATABASE_DEV }}" >> $GITHUB_ENV
echo "VAULT_PORT=${{ secrets.VAULT_PORT_DEV }}" >> $GITHUB_ENV
echo "UNSEAL_KEY_1=${{ secrets.UNSEAL_KEY_1_DEV }}" >> $GITHUB_ENV
echo "UNSEAL_KEY_2=${{ secrets.UNSEAL_KEY_2_DEV }}" >> $GITHUB_ENV
echo "UNSEAL_KEY_3=${{ secrets.UNSEAL_KEY_3_DEV }}" >> $GITHUB_ENV
echo "ROOT_VAULT_TOKEN=${{ secrets.ROOT_VAULT_TOKEN_DEV }}" >> $GITHUB_ENV
elif [ "${{ github.ref }}" = "refs/heads/main" ]; then
echo "EXTPORT=3001" >> $GITHUB_ENV
echo "IMAGE=backend-main" >> $GITHUB_ENV
echo "VAULT_PORT=8201" >> $GITHUB_ENV
echo "SQLDATABASE=selecro_main" >> $GITHUB_ENV
echo "DEFAULT_PORT=${{ secrets.DEFAULT_PORT_MAIN }}" >> $GITHUB_ENV
echo "SQL_DATABASE=${{ secrets.SQL_DATABASE_MAIN }}" >> $GITHUB_ENV
echo "VAULT_PORT=${{ secrets.VAULT_PORT_MAIN }}" >> $GITHUB_ENV
echo "UNSEAL_KEY_1=${{ secrets.UNSEAL_KEY_1_MAIN }}" >> $GITHUB_ENV
echo "UNSEAL_KEY_2=${{ secrets.UNSEAL_KEY_2_MAIN }}" >> $GITHUB_ENV
echo "UNSEAL_KEY_3=${{ secrets.UNSEAL_KEY_3_MAIN }}" >> $GITHUB_ENV
echo "ROOT_VAULT_TOKEN=${{ secrets.ROOT_VAULT_TOKEN_MAIN }}" >> $GITHUB_ENV
else
echo "Invalid branch for deployment" && exit 1
fi
Expand Down Expand Up @@ -78,28 +86,31 @@ jobs:
docker ps -a | grep ${{ env.IMAGE }} && docker stop ${{ env.IMAGE }} || true && \
docker ps -a | grep ${{ env.IMAGE }} && docker rm ${{ env.IMAGE }} || true && \
docker run \
-e HOST="${{ secrets.HOST }}" \
-e SQLHOST="${{ secrets.SQLHOST }}" \
-e SQLPORT="${{ secrets.SQLPORT }}" \
-e SQLUSER="${{ secrets.SQLUSER }}" \
-e SQLPASSWORD="${{ secrets.SQLPASSWORD }}" \
-e SQLDATABASE="${{ env.SQLDATABASE }}" \
-e TOKEN="${{ secrets.TOKEN }}" \
-e EXTPORT="${{ env.EXTPORT }}" \
-e EMAILHOST="${{ secrets.EMAILHOST }}" \
-e EMAILPORT="${{ secrets.EMAILPORT }}" \
-e EMAILUSER="${{ secrets.EMAILUSER }}" \
-e EMAILPASSWORD="${{ secrets.EMAILPASSWORD }}" \
-e JWT_SECRET="$${{ secrets.JWT_SECRET }}" \
-e UNSEAL_KEY_1="${{ secrets.UNSEAL_KEY_1 }}" \
-e UNSEAL_KEY_2="${{ secrets.UNSEAL_KEY_2 }}" \
-e DEFAULT_HOST="${{ secrets.DEFAULT_HOST }}" \
-e DEFAULT_PORT="${{ env.DEFAULT_PORT }}" \
-e JWT_SECRET="${{ secrets.JWT_SECRET }}" \
-e JWT_SECRET_EMAIL="${{ secrets.JWT_SECRET_EMAIL }}" \
-e JWT_SECRET_SIGNUP="${{ secrets.JWT_SECRET_SIGNUP }}" \
-e SQL_HOST="${{ secrets.SQL_HOST }}" \
-e SQL_PORT="${{ secrets.SQL_PORT }}" \
-e SQL_USER="${{ secrets.SQL_USER }}" \
-e SQL_PASSWORD="${{ secrets.SQL_PASSWORD }}" \
-e SQL_DATABASE="${{ env.SQL_DATABASE }}" \
-e EMAIL_HOST="${{ secrets.EMAIL_HOST }}" \
-e EMAIL_PORT="${{ secrets.EMAIL_PORT }}" \
-e EMAIL_USER="${{ secrets.EMAIL_USER }}" \
-e EMAIL_PASSWORD="${{ secrets.EMAIL_PASSWORD }}" \
-e VAULT_URL="${{ secrets.VAULT_URL }}" \
-e VAULT_URL="${{ secrets.VAULT_URL }}" \
-e VAULT_PORT="${{ env.VAULT_PORT }}" \
-e CLIENT_ID="${{ secrets.CLIENT_ID }}" \
-e ROOT_VAULT="${{ secrets.ROOT_VAULT }}" \
-e INSTRUCTION_KEY="${{ secrets.INSTRUCTION_KEY }}" \
-e INSTRUCTION_KEY_PERMISSIONS="${{ secrets.INSTRUCTION_KEY_PERMISSIONS }}" \
--name ${{ env.IMAGE }} -dp ${{ env.EXTPORT }}:${{ env.EXTPORT }} \
-e UNSEAL_KEY_1="${{ env.UNSEAL_KEY_1 }}" \
-e UNSEAL_KEY_2="${{ env.UNSEAL_KEY_2 }}" \
-e UNSEAL_KEY_3="${{ env.UNSEAL_KEY_3 }}" \
-e ROOT_VAULT_TOKEN="${{ env.ROOT_VAULT_TOKEN }}" \
-e IMGUR_CLIENT_ID="${{ secrets.IMGUR_CLIENT_ID }}" \
-e INSTRUCTION_KEY_PREMIUM="${{ secrets.INSTRUCTION_KEY_PREMIUM }}" \
-e INSTRUCTION_KEY_PREMIUM_PERMISSIONS="${{ secrets.INSTRUCTION_KEY_PREMIUM_PERMISSIONS }}" \
--name ${{ env.IMAGE }} -dp ${{ env.DEFAULT_PORT }}:${{ env.DEFAULT_PORT }} \
selecro/${{ env.IMAGE }}:${{ github.ref_name }}-${{ env.SHORT_SHA }} && \
docker update --restart unless-stopped ${{ env.IMAGE }} && exit
Expand Down
18 changes: 15 additions & 3 deletions src/application.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,18 @@ import {
import {ServiceMixin} from '@loopback/service-proxy';
import * as dotenv from 'dotenv';
import path from 'path';
import {PingController, UserController} from './controllers';
import {
InstructionStepController,
PingController,
UserController,
UserInstructionController,
UserLinkController,
UserProgressController,
} from './controllers';
import {DbDataSource} from './datasources';
import {
InstructionRepository,
ProgressRepository,
StepRepository,
UserLinkRepository,
UserRepository,
Expand Down Expand Up @@ -49,16 +57,20 @@ export class SelecroBackendApplication extends BootMixin(
this.component(JWTAuthenticationComponent);
this.controller(PingController);
this.controller(UserController);
this.controller(StepRepository);
this.controller(UserProgressController);
this.controller(UserLinkController);
this.controller(UserInstructionController);
this.controller(InstructionStepController);
this.repository(UserRepository);
this.repository(InstructionRepository);
this.repository(StepRepository);
this.repository(UserLinkRepository);
this.repository(ProgressRepository);
this.dataSource(DbDataSource);

this.bind('services.jwt.service').toClass(JWTService);
this.bind('authentication.jwt.expiresIn').to('32d');
this.bind('authentication.jwt.secret').to(process.env.TOKEN);
this.bind('authentication.jwt.secret').to(process.env.JWT_SECRET);
this.bind('services.hasher').toClass(BcryptHasher);
this.bind('services.hasher.rounds').to(10);
this.bind('services.user.service').toClass(MyUserService);
Expand Down
1 change: 1 addition & 0 deletions src/controllers/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ export * from './ping.controller';
export * from './user-instruction.controller';
export * from './user.controller';
export * from './user-link.controller';
export * from './user-progress.controller';
26 changes: 13 additions & 13 deletions src/controllers/instruction-step.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@ export class InstructionStepController {
},
},
})
async create(
@param.path.number('id') instructionId: number,
async createStep(
@param.path.number('instructionId') instructionId: number,
@requestBody({
content: {
'application/json': {
Expand All @@ -76,7 +76,7 @@ export class InstructionStepController {
},
},
})
step: Omit<Step, 'id' | 'instructionId'>,
step: Omit<Step, 'id' | 'link' | 'deleteHash' | 'instructionId'>,
): Promise<Step> {
const user = await this.userRepository.findById(this.user.id);
if (!user) {
Expand Down Expand Up @@ -110,9 +110,9 @@ export class InstructionStepController {
},
},
})
async patch(
@param.path.number('stepId') stepId: number,
async patchStep(
@param.path.number('instructionId') instructionId: number,
@param.path.number('stepId') stepId: number,
@requestBody({
content: {
'application/json': {
Expand Down Expand Up @@ -160,7 +160,7 @@ export class InstructionStepController {
}

@authenticate('jwt')
@del('/users/{id}/instructions/{instructionId}/steps/{stepId}', {
@del('/users/{id}/instructions/{instructionId}/steps/${stepId}', {
responses: {
'200': {
description: 'Delete Step',
Expand All @@ -174,9 +174,9 @@ export class InstructionStepController {
},
},
})
async delete(
@param.path.number('stepId') stepId: number,
async deleteStep(
@param.path.number('instructionId') instructionId: number,
@param.path.number('stepId') stepId: number,
): Promise<boolean> {
const user = await this.userRepository.findById(this.user.id);
if (!user) {
Expand Down Expand Up @@ -239,7 +239,7 @@ export class InstructionStepController {
},
},
})
async getPublicInstructions(
async getSteps(
@param.path.number('instructionId') instructionId: number,
): Promise<Omit<Step, 'deleteHash'>[]> {
const user = await this.userRepository.findById(this.user.id);
Expand Down Expand Up @@ -274,9 +274,9 @@ export class InstructionStepController {
},
},
})
async uploadPicture(
@param.path.number('stepId') stepId: number,
async uploadStepsPicture(
@param.path.number('instructionId') instructionId: number,
@param.path.number('stepId') stepId: number,
@requestBody({
content: {
'multipart/form-data': {
Expand Down Expand Up @@ -335,9 +335,9 @@ export class InstructionStepController {
},
},
})
async deleteImage(
@param.path.number('stepId') stepId: number,
async deleteStepPicture(
@param.path.number('instructionId') instructionId: number,
@param.path.number('stepId') stepId: number,
): Promise<boolean> {
const user = await this.userRepository.findById(this.user.id);
if (!user) {
Expand Down
Loading

0 comments on commit 80d07d1

Please sign in to comment.