refactor: last repository (#16042)

This commit is contained in:
Jason Rasmussen 2025-02-11 17:15:56 -05:00 committed by GitHub
parent 5f3a42a132
commit fa5aeaf539
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
71 changed files with 574 additions and 603 deletions

View file

@ -4,6 +4,7 @@ import { Reflector } from '@nestjs/core';
import { SchedulerRegistry } from '@nestjs/schedule';
import { Test } from '@nestjs/testing';
import { TypeOrmModule } from '@nestjs/typeorm';
import { ClassConstructor } from 'class-transformer';
import { PostgresJSDialect } from 'kysely-postgres-js';
import { KyselyModule } from 'nestjs-kysely';
import { OpenTelemetryModule } from 'nestjs-otel';
@ -13,7 +14,7 @@ import postgres from 'postgres';
import { format } from 'sql-formatter';
import { GENERATE_SQL_KEY, GenerateSqlQueries } from 'src/decorators';
import { entities } from 'src/entities';
import { providers, repositories } from 'src/repositories';
import { repositories } from 'src/repositories';
import { AccessRepository } from 'src/repositories/access.repository';
import { ConfigRepository } from 'src/repositories/config.repository';
import { LoggingRepository } from 'src/repositories/logging.repository';
@ -45,8 +46,7 @@ export class SqlLogger implements Logger {
const reflector = new Reflector();
type Repository = (typeof providers)[0]['useClass'];
type Provider = { provide: any; useClass: Repository };
type Repository = ClassConstructor<any>;
type SqlGeneratorOptions = { targetDir: string };
class SqlGenerator {
@ -59,15 +59,11 @@ class SqlGenerator {
async run() {
try {
await this.setup();
const targets = [
...providers,
...repositories.map((repository) => ({ provide: repository, useClass: repository as any })),
];
for (const repository of targets) {
if (repository.provide === LoggingRepository) {
for (const Repository of repositories) {
if (Repository === LoggingRepository) {
continue;
}
await this.process(repository);
await this.process(Repository);
}
await this.write();
this.stats();
@ -105,19 +101,19 @@ class SqlGenerator {
TypeOrmModule.forFeature(entities),
OpenTelemetryModule.forRoot(otel),
],
providers: [...providers, ...repositories, AuthService, SchedulerRegistry],
providers: [...repositories, AuthService, SchedulerRegistry],
}).compile();
this.app = await moduleFixture.createNestApplication().init();
}
async process({ provide: token, useClass: Repository }: Provider) {
async process(Repository: Repository) {
if (!this.app) {
throw new Error('Not initialized');
}
const data: string[] = [`-- NOTE: This file is auto generated by ./sql-generator`];
const instance = this.app.get<Repository>(token);
const instance = this.app.get<Repository>(Repository);
// normal repositories
data.push(...(await this.runTargets(instance, `${Repository.name}`)));