@terabits/grapi
Version:
Grapi Schema Generator For GraphQL Server
40 lines (39 loc) • 1.68 kB
TypeScript
import { Model, RelationType } from '../dataModel';
import { Relation, WithForeignKey } from './interface';
export default class OneToMany implements Relation, WithForeignKey {
private oneSideModel;
private manySideModel;
private oneSideField;
private manySideField?;
private foreignKey;
constructor({ oneSideModel, manySideModel, oneSideField, manySideField, foreignKey, }: {
oneSideModel: Model;
manySideModel: Model;
oneSideField: string;
manySideField?: string;
foreignKey?: string;
});
getType(): RelationType;
getForeignKey(): string;
getForeignKeyConfig(): any;
getOneSideField(): string;
getManySideField(): string;
setForeignKeyOnManySide(targetId: string): {
[x: string]: string;
};
createAndSetForeignKeyOnManySide(targetData: Record<string, any>, context: any): Promise<{
[x: string]: string;
}>;
unsetForeignKeyOnManySide(): {
[x: string]: string;
};
destroyAndUnsetForeignKeyOnManySide(data: Record<string, any>, context: any): Promise<{
[x: string]: string;
}>;
addIdFromOneSide(oneSideId: string, manySideId: string, context: any): Promise<void>;
createAndAddFromOneSide(oneSideId: string, manySideData: any, context: any): Promise<void>;
removeIdFromOneSide(oneSideId: string, manySideId: string, context: any): Promise<void>;
deleteRecordFromOneSide(manySideId: string, context: any): Promise<void>;
joinManyOnOneSide(data: Record<string, any>, argument: Record<string, any>, context: any): Promise<any[]>;
joinOneOnManySide(data: Record<string, any>, context: any): Promise<any>;
}