Skip to content

Commit

Permalink
feat: add config entity
Browse files Browse the repository at this point in the history
  • Loading branch information
Mefjus committed Aug 1, 2021
1 parent 9575614 commit 09e8acd
Show file tree
Hide file tree
Showing 10 changed files with 117 additions and 18 deletions.
29 changes: 29 additions & 0 deletions packages/api/src/interfaces/actions.types.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
export type ActionMode = 'OUTPUT' | 'INPUT';
export type ActionValue = 'LOW' | 'HIGH';
export type ActionPin = string | number;

export type OpenAction = {
type: 'OPEN';
pin: ActionPin;
mode: ActionMode;
value: ActionValue;
};

export type WriteAction = {
type: 'WRITE';
pin: ActionPin;
value: ActionValue;
};

export type SleepAction = {
type: 'SLEEP';
time: number;
};

export type Action = OpenAction | WriteAction | SleepAction;

export type ActionConfig = {
onInit: Array<Action>;
onToggle: Array<Action>;
pinDefinition: Record<string, number>;
};
2 changes: 2 additions & 0 deletions packages/api/src/modules/app.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { ThrottlerModule } from '@nestjs/throttler';
import { AuthModule } from './auth/auth.module';
import { Config } from './config/config';
import { ConfigModule } from './config/config.module';
import { ConfigurationModule } from './configuration/configuration.module';
import { DatabaseModule } from './database/database.module';
import { InvitationsModule } from './invitations/invitations.module';
import { MailerModule } from './mailer/mailer.module';
Expand Down Expand Up @@ -37,6 +38,7 @@ import { WebsocketModule } from './websocket/websocket.module';
WebsocketModule,
TicketModule,
PushNotificationsModule,
ConfigurationModule,
],
})
export class AppModule {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { Module } from '@nestjs/common';

import { ConfigModule } from '../../config/config.module';
import { ConfigurationConfigService } from './configuration-config.service';

@Module({
imports: [ConfigModule],
providers: [ConfigurationConfigService],
exports: [ConfigurationConfigService],
})
export class ConfigurationConfigModule {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { Injectable } from '@nestjs/common';

import { Config } from '../../config/config';

@Injectable()
export class ConfigurationConfigService {
constructor(private readonly config: Config) {}

getDeviceTicket() {
return this.config.device.ticket;
}
}
22 changes: 22 additions & 0 deletions packages/api/src/modules/database/entities/config.entity.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn } from 'typeorm';

@Entity('config')
export class ConfigEntity {
@PrimaryGeneratedColumn()
public id: string;

@CreateDateColumn({
type: 'timestamp',
})
public createdAt: number;

@CreateDateColumn({
type: 'timestamp',
})
public updatedAt: number;

@Column({
type: 'varchar',
})
public value: string;
}
9 changes: 8 additions & 1 deletion packages/api/src/modules/database/entities/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
import { ConfigEntity } from './config.entity';
import { InvitationEntity } from './invitation.entity';
import { PushNotificationEntity } from './pushNotification.entity';
import { RefreshTokenEntity } from './refreshToken.entity';
import { UserEntity } from './user.entity';

export default [UserEntity, RefreshTokenEntity, InvitationEntity, PushNotificationEntity];
export default [
UserEntity,
RefreshTokenEntity,
InvitationEntity,
PushNotificationEntity,
ConfigEntity,
];
12 changes: 12 additions & 0 deletions packages/api/src/modules/repository/config.repository.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import constants from '../../utils/constants';
import { ConfigEntity } from '../database/entities/config.entity';
import { BaseRepository } from './base.repository';

export class ConfigRepository extends BaseRepository(ConfigEntity) {
async getRaspberryPiActionConfig(): Promise<ConfigEntity | undefined> {
const {
DB_CONFIG_KEYS: { DEVICE_ACTION_CONFIG },
} = constants;
return this.findOne({ where: { id: DEVICE_ACTION_CONFIG } });
}
}
13 changes: 13 additions & 0 deletions packages/api/src/modules/repository/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { ConfigRepository } from './config.repository';
import { InvitationRepository } from './invitation.repository';
import { PushNotificationRepository } from './push-notification.repository';
import { RefreshTokenRepository } from './refresh-token.repository';
import { UserRepository } from './user.repository';

export default [
UserRepository,
InvitationRepository,
RefreshTokenRepository,
PushNotificationRepository,
ConfigRepository,
];
19 changes: 3 additions & 16 deletions packages/api/src/modules/repository/repository.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,11 @@ import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';

import entities from '../database/entities';
import { InvitationRepository } from './invitation.repository';
import { PushNotificationRepository } from './push-notification.repository';
import { RefreshTokenRepository } from './refresh-token.repository';
import { UserRepository } from './user.repository';
import repositories from '.';

@Module({
imports: [TypeOrmModule.forFeature(entities)],
providers: [
UserRepository,
InvitationRepository,
RefreshTokenRepository,
PushNotificationRepository,
],
exports: [
UserRepository,
InvitationRepository,
RefreshTokenRepository,
PushNotificationRepository,
],
providers: [...repositories],
exports: [...repositories],
})
export class RepositoryModule {}
6 changes: 5 additions & 1 deletion packages/api/src/utils/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,12 @@ const authTokens = {
},
};

const DB_CONFIG_KEYS = {
DEVICE_ACTION_CONFIG: 'DEVICE_ACTION_CONFIG',
};

const clientEndpoints = {
passwordMagicLink: '/passwordRecovery/magicLink',
registrationMagicLink: '/registration',
};
export default { authTokens, clientEndpoints };
export default { authTokens, clientEndpoints, DB_CONFIG_KEYS };

0 comments on commit 09e8acd

Please sign in to comment.