[backend] rename repository services and replace repository modules by dynamicModule (#4536)

* rename database services to repository

* refactor more repositories

* more refactoring

* followup

* remove unused imports

* fix

* fix

* Fix calendar listener being called when flag is off

* remove folders
This commit is contained in:
Weiko
2024-03-18 16:26:23 +01:00
committed by GitHub
parent 2aa6bcdb70
commit 8fb1ab8933
79 changed files with 1080 additions and 776 deletions

View File

@ -1,19 +1,20 @@
import { Module } from '@nestjs/common';
import { PersonModule } from 'src/modules/person/repositories/person/person.module';
import { WorkspaceMemberModule } from 'src/modules/workspace-member/repositories/workspace-member/workspace-member.module';
import { CreateCompanyAndContactService } from 'src/modules/connected-account/auto-companies-and-contacts-creation/create-company-and-contact/create-company-and-contact.service';
import { CreateCompanyModule } from 'src/modules/connected-account/auto-companies-and-contacts-creation/create-company/create-company.module';
import { CreateContactModule } from 'src/modules/connected-account/auto-companies-and-contacts-creation/create-contact/create-contact.module';
import { WorkspaceDataSourceModule } from 'src/engine/workspace-datasource/workspace-datasource.module';
import { ObjectMetadataRepositoryModule } from 'src/engine/object-metadata-repository/object-metadata-repository.module';
import { PersonObjectMetadata } from 'src/modules/person/standard-objects/person.object-metadata';
import { WorkspaceMemberObjectMetadata } from 'src/modules/workspace-member/standard-objects/workspace-member.object-metadata';
@Module({
imports: [
WorkspaceDataSourceModule,
CreateContactModule,
CreateCompanyModule,
WorkspaceMemberModule,
PersonModule,
ObjectMetadataRepositoryModule.forFeature([
PersonObjectMetadata,
WorkspaceMemberObjectMetadata,
]),
],
providers: [CreateCompanyAndContactService],
exports: [CreateCompanyAndContactService],

View File

@ -7,19 +7,24 @@ import { Participant } from 'src/modules/messaging/types/gmail-message';
import { getDomainNameFromHandle } from 'src/modules/messaging/utils/get-domain-name-from-handle.util';
import { CreateCompanyService } from 'src/modules/connected-account/auto-companies-and-contacts-creation/create-company/create-company.service';
import { CreateContactService } from 'src/modules/connected-account/auto-companies-and-contacts-creation/create-contact/create-contact.service';
import { PersonService } from 'src/modules/person/repositories/person/person.service';
import { WorkspaceMemberService } from 'src/modules/workspace-member/repositories/workspace-member/workspace-member.service';
import { PersonRepository } from 'src/modules/person/repositories/person.repository';
import { WorkspaceMemberRepository } from 'src/modules/workspace-member/repositories/workspace-member.repository';
import { getUniqueParticipantsAndHandles } from 'src/modules/messaging/utils/get-unique-participants-and-handles.util';
import { filterOutParticipantsFromCompanyOrWorkspace } from 'src/modules/messaging/utils/filter-out-participants-from-company-or-workspace.util';
import { isWorkEmail } from 'src/utils/is-work-email';
import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator';
import { PersonObjectMetadata } from 'src/modules/person/standard-objects/person.object-metadata';
import { WorkspaceMemberObjectMetadata } from 'src/modules/workspace-member/standard-objects/workspace-member.object-metadata';
@Injectable()
export class CreateCompanyAndContactService {
constructor(
private readonly personService: PersonService,
private readonly createContactService: CreateContactService,
private readonly createCompaniesService: CreateCompanyService,
private readonly workspaceMemberService: WorkspaceMemberService,
@InjectObjectMetadataRepository(PersonObjectMetadata)
private readonly personRepository: PersonRepository,
@InjectObjectMetadataRepository(WorkspaceMemberObjectMetadata)
private readonly workspaceMemberRepository: WorkspaceMemberRepository,
) {}
async createCompaniesAndContacts(
@ -36,7 +41,7 @@ export class CreateCompanyAndContactService {
const isContactAutoCreationForNonWorkEmailsEnabled = false;
const workspaceMembers =
await this.workspaceMemberService.getAllByWorkspaceId(
await this.workspaceMemberRepository.getAllByWorkspaceId(
workspaceId,
transactionManager,
);
@ -55,7 +60,7 @@ export class CreateCompanyAndContactService {
return;
}
const alreadyCreatedContacts = await this.personService.getByEmails(
const alreadyCreatedContacts = await this.personRepository.getByEmails(
uniqueHandles,
workspaceId,
);

View File

@ -1,11 +1,11 @@
import { Module } from '@nestjs/common';
import { WorkspaceDataSourceModule } from 'src/engine/workspace-datasource/workspace-datasource.module';
import { ObjectMetadataRepositoryModule } from 'src/engine/object-metadata-repository/object-metadata-repository.module';
import { CompanyObjectMetadata } from 'src/modules/company/standard-objects/company.object-metadata';
import { CreateCompanyService } from 'src/modules/connected-account/auto-companies-and-contacts-creation/create-company/create-company.service';
import { CompanyModule } from 'src/modules/messaging/repositories/company/company.module';
@Module({
imports: [WorkspaceDataSourceModule, CompanyModule],
imports: [ObjectMetadataRepositoryModule.forFeature([CompanyObjectMetadata])],
providers: [CreateCompanyService],
exports: [CreateCompanyService],
})

View File

@ -4,13 +4,18 @@ import { EntityManager } from 'typeorm';
import { v4 } from 'uuid';
import axios, { AxiosInstance } from 'axios';
import { CompanyService } from 'src/modules/messaging/repositories/company/company.service';
import { CompanyRepository } from 'src/modules/company/repositories/company.repository';
import { getCompanyNameFromDomainName } from 'src/modules/messaging/utils/get-company-name-from-domain-name.util';
import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator';
import { CompanyObjectMetadata } from 'src/modules/company/standard-objects/company.object-metadata';
@Injectable()
export class CreateCompanyService {
private readonly httpService: AxiosInstance;
constructor(private readonly companyService: CompanyService) {
constructor(
@InjectObjectMetadataRepository(CompanyObjectMetadata)
private readonly companyRepository: CompanyRepository,
) {
this.httpService = axios.create({
baseURL: 'https://companies.twenty.com',
});
@ -30,7 +35,7 @@ export class CreateCompanyService {
const uniqueDomainNames = [...new Set(domainNames)];
const existingCompanies =
await this.companyService.getExistingCompaniesByDomainNames(
await this.companyRepository.getExistingCompaniesByDomainNames(
uniqueDomainNames,
workspaceId,
transactionManager,
@ -80,7 +85,7 @@ export class CreateCompanyService {
const { name, city } = await this.getCompanyInfoFromDomainName(domainName);
this.companyService.createCompany(
this.companyRepository.createCompany(
workspaceId,
{
id: companyId,

View File

@ -1,11 +1,11 @@
import { Module } from '@nestjs/common';
import { WorkspaceDataSourceModule } from 'src/engine/workspace-datasource/workspace-datasource.module';
import { ObjectMetadataRepositoryModule } from 'src/engine/object-metadata-repository/object-metadata-repository.module';
import { CreateContactService } from 'src/modules/connected-account/auto-companies-and-contacts-creation/create-contact/create-contact.service';
import { PersonModule } from 'src/modules/person/repositories/person/person.module';
import { PersonObjectMetadata } from 'src/modules/person/standard-objects/person.object-metadata';
@Module({
imports: [WorkspaceDataSourceModule, PersonModule],
imports: [ObjectMetadataRepositoryModule.forFeature([PersonObjectMetadata])],
providers: [CreateContactService],
exports: [CreateContactService],
})

View File

@ -3,8 +3,10 @@ import { Injectable } from '@nestjs/common';
import { EntityManager } from 'typeorm';
import { v4 } from 'uuid';
import { PersonService } from 'src/modules/person/repositories/person/person.service';
import { PersonRepository } from 'src/modules/person/repositories/person.repository';
import { getFirstNameAndLastNameFromHandleAndDisplayName } from 'src/modules/messaging/utils/get-first-name-and-last-name-from-handle-and-display-name.util';
import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator';
import { PersonObjectMetadata } from 'src/modules/person/standard-objects/person.object-metadata';
type ContactToCreate = {
handle: string;
@ -22,7 +24,10 @@ type FormattedContactToCreate = {
@Injectable()
export class CreateContactService {
constructor(private readonly personService: PersonService) {}
constructor(
@InjectObjectMetadataRepository(PersonObjectMetadata)
private readonly personRepository: PersonRepository,
) {}
public formatContacts(
contactsToCreate: ContactToCreate[],
@ -54,7 +59,7 @@ export class CreateContactService {
const formattedContacts = this.formatContacts(contactsToCreate);
await this.personService.createPeople(
await this.personRepository.createPeople(
formattedContacts,
workspaceId,
transactionManager,