afterCreateEntityExtensions(
  context: dotnetTypes.DsgContext,
  eventParams: dotnet.CreateEntityExtensionsParams,
  files: FileMap<Class>
): Promise<FileMap<Class>> {
  const { entity, resourceName, apisDir } = eventParams;
  const extensionsPath = `${apisDir}/${entity.name}/${pascalCase(entity.name)}Extensions.cs`;
  const extensionsFile = files.get(extensionsPath);

  if (extensionsFile) {
    // Add a custom extension method
    extensionsFile.code.addMethod(
      CsharpSupport.method({
        name: "ToAuditString",
        isStatic: true,
        returnType: CsharpSupport.Types.string(),
        parameters: [
          CsharpSupport.parameter({
            name: "this",
            type: CsharpSupport.Types.reference(entity.name),
            isThis: true,
          }),
        ],
        body: `
          return "${entity.Id}|${entity.CreatedAt}|${entity.UpdatedAt}";
        `,
      })
    );

    // Add a custom mapper extension
    extensionsFile.code.addMethod(
      CsharpSupport.method({
        name: "ToDto",
        isStatic: true,
        returnType: CsharpSupport.Types.reference(`${entity.name}Dto`),
        parameters: [
          CsharpSupport.parameter({
            name: "this",
            type: CsharpSupport.Types.reference(entity.name),
            isThis: true,
          }),
        ],
        body: `
          return new ${entity.name}Dto
          {
            Id = entity.Id,
            // Map other properties here
            AuditString = entity.ToAuditString()
          };
        `,
      })
    );
  }

  return files;
}

Event Name

CreateEntityExtensions

Event Parameters

entity
Entity

The entity object for which extension methods are being created.

resourceName
string

The name of the resource (typically the entity name).

apisDir
string

The directory where the API related files are being generated.

afterCreateEntityExtensions(
  context: dotnetTypes.DsgContext,
  eventParams: dotnet.CreateEntityExtensionsParams,
  files: FileMap<Class>
): Promise<FileMap<Class>> {
  const { entity, resourceName, apisDir } = eventParams;
  const extensionsPath = `${apisDir}/${entity.name}/${pascalCase(entity.name)}Extensions.cs`;
  const extensionsFile = files.get(extensionsPath);

  if (extensionsFile) {
    // Add a custom extension method
    extensionsFile.code.addMethod(
      CsharpSupport.method({
        name: "ToAuditString",
        isStatic: true,
        returnType: CsharpSupport.Types.string(),
        parameters: [
          CsharpSupport.parameter({
            name: "this",
            type: CsharpSupport.Types.reference(entity.name),
            isThis: true,
          }),
        ],
        body: `
          return "${entity.Id}|${entity.CreatedAt}|${entity.UpdatedAt}";
        `,
      })
    );

    // Add a custom mapper extension
    extensionsFile.code.addMethod(
      CsharpSupport.method({
        name: "ToDto",
        isStatic: true,
        returnType: CsharpSupport.Types.reference(`${entity.name}Dto`),
        parameters: [
          CsharpSupport.parameter({
            name: "this",
            type: CsharpSupport.Types.reference(entity.name),
            isThis: true,
          }),
        ],
        body: `
          return new ${entity.name}Dto
          {
            Id = entity.Id,
            // Map other properties here
            AuditString = entity.ToAuditString()
          };
        `,
      })
    );
  }

  return files;
}