Choaib Mouhrach
Choaib Mouhrach
DTDrizzle Team
Created by Choaib Mouhrach on 12/2/2024 in #help
Table type
In the example below, I have an abstract class with several methods. While redefining these methods for each implementation works, I want to provide default functionality directly in the repository as a static class attribute. This way, I can override the defaults only when needed. However, I’m unsure about the appropriate type for the table attribute. Can someone help me resolve this issue?
export abstract class Repo<TEntity extends { id: string }, TInsert> {
public abstract find(
finder: { id: string },
tx: TConnection
): Promise<Entity<TEntity, TInsert> | null>;

public abstract findOrThrow(
finder: Parameters<typeof this.find>[0],
tx: TConnection
): Promise<Entity<TEntity, TInsert>>;

public abstract create(
inputs: TInsert[],
tx: TConnection
): Promise<Entity<TEntity, TInsert>[]>;

public abstract update(
finder: { id: string },
input: Partial<TEntity>,
tx: TConnection
): Promise<void>;

public abstract softRemove(
finder: { id: string },
tx: TConnection
): Promise<void>;
}
export abstract class Repo<TEntity extends { id: string }, TInsert> {
public abstract find(
finder: { id: string },
tx: TConnection
): Promise<Entity<TEntity, TInsert> | null>;

public abstract findOrThrow(
finder: Parameters<typeof this.find>[0],
tx: TConnection
): Promise<Entity<TEntity, TInsert>>;

public abstract create(
inputs: TInsert[],
tx: TConnection
): Promise<Entity<TEntity, TInsert>[]>;

public abstract update(
finder: { id: string },
input: Partial<TEntity>,
tx: TConnection
): Promise<void>;

public abstract softRemove(
finder: { id: string },
tx: TConnection
): Promise<void>;
}
1 replies