chore: ts improvements on delete operation
This commit is contained in:
@@ -1,10 +1,11 @@
|
||||
/* eslint-disable no-param-reassign */
|
||||
import { Config as GeneratedTypes } from 'payload/generated-types';
|
||||
import { Response } from 'express';
|
||||
import { PayloadRequest } from '../../../express/types';
|
||||
import { Collection } from '../../config/types';
|
||||
import deleteOperation from '../../operations/delete';
|
||||
|
||||
export type Resolver = (
|
||||
export type Resolver<TSlug extends keyof GeneratedTypes['collections']> = (
|
||||
_: unknown,
|
||||
args: {
|
||||
locale?: string
|
||||
@@ -14,9 +15,11 @@ export type Resolver = (
|
||||
req: PayloadRequest,
|
||||
res: Response
|
||||
}
|
||||
) => Promise<Document>
|
||||
) => Promise<GeneratedTypes['collections'][TSlug]>
|
||||
|
||||
export default function getDeleteResolver(collection: Collection): Resolver {
|
||||
export default function getDeleteResolver<TSlug extends keyof GeneratedTypes['collections']>(
|
||||
collection: Collection,
|
||||
): Resolver<TSlug> {
|
||||
async function resolver(_, args, context) {
|
||||
if (args.locale) context.req.locale = args.locale;
|
||||
if (args.fallbackLocale) context.req.fallbackLocale = args.fallbackLocale;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
|
||||
import { Config as GeneratedTypes } from 'payload/generated-types';
|
||||
import { PayloadRequest } from '../../express/types';
|
||||
import sanitizeInternalFields from '../../utilities/sanitizeInternalFields';
|
||||
import { NotFound, Forbidden, ErrorDeletingFile } from '../../errors';
|
||||
@@ -21,7 +22,9 @@ export type Arguments = {
|
||||
showHiddenFields?: boolean
|
||||
}
|
||||
|
||||
async function deleteOperation(incomingArgs: Arguments): Promise<Document> {
|
||||
async function deleteOperation<TSlug extends keyof GeneratedTypes['collections']>(
|
||||
incomingArgs: Arguments,
|
||||
): Promise<GeneratedTypes['collections'][TSlug]> {
|
||||
let args = incomingArgs;
|
||||
|
||||
// /////////////////////////////////////
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { TypeWithID } from '../../config/types';
|
||||
import { Config as GeneratedTypes } from 'payload/generated-types';
|
||||
import { Document } from '../../../types';
|
||||
import { PayloadRequest } from '../../../express/types';
|
||||
import { Payload } from '../../../payload';
|
||||
@@ -6,8 +6,8 @@ import deleteOperation from '../delete';
|
||||
import { getDataLoader } from '../../dataloader';
|
||||
import i18n from '../../../translations/init';
|
||||
|
||||
export type Options = {
|
||||
collection: string
|
||||
export type Options<T extends keyof GeneratedTypes['collections']> = {
|
||||
collection: T
|
||||
id: string
|
||||
depth?: number
|
||||
locale?: string
|
||||
@@ -17,7 +17,10 @@ export type Options = {
|
||||
showHiddenFields?: boolean
|
||||
}
|
||||
|
||||
export default async function deleteLocal<T extends TypeWithID = any>(payload: Payload, options: Options): Promise<T> {
|
||||
export default async function deleteLocal<TSlug extends keyof GeneratedTypes['collections']>(
|
||||
payload: Payload,
|
||||
options: Options<TSlug>,
|
||||
): Promise<GeneratedTypes['collections'][TSlug]> {
|
||||
const {
|
||||
collection: collectionSlug,
|
||||
depth,
|
||||
@@ -44,7 +47,7 @@ export default async function deleteLocal<T extends TypeWithID = any>(payload: P
|
||||
if (!req.t) req.t = req.i18n.t;
|
||||
if (!req.payloadDataLoader) req.payloadDataLoader = getDataLoader(req);
|
||||
|
||||
return deleteOperation({
|
||||
return deleteOperation<TSlug>({
|
||||
depth,
|
||||
id,
|
||||
collection,
|
||||
|
||||
@@ -21,7 +21,10 @@ export type Options<T extends keyof GeneratedTypes['collections']> = {
|
||||
draft?: boolean
|
||||
}
|
||||
|
||||
export default async function findByIDLocal<T extends keyof GeneratedTypes['collections']>(payload: Payload, options: Options<T>): Promise<GeneratedTypes['collections'][T]> {
|
||||
export default async function findByIDLocal<T extends keyof GeneratedTypes['collections']>(
|
||||
payload: Payload,
|
||||
options: Options<T>,
|
||||
): Promise<GeneratedTypes['collections'][T]> {
|
||||
const {
|
||||
collection: collectionSlug,
|
||||
depth,
|
||||
|
||||
@@ -287,7 +287,7 @@ export class BasePayload<TGeneratedTypes extends GeneratedTypes> {
|
||||
return update<T>(this, options);
|
||||
}
|
||||
|
||||
delete = async <T extends TypeWithID = any>(options: DeleteOptions): Promise<T> => {
|
||||
delete = async <T extends keyof TGeneratedTypes['collections']>(options: DeleteOptions<T>): Promise<TGeneratedTypes['collections'][T]> => {
|
||||
const { localDelete } = localOperations;
|
||||
return localDelete<T>(this, options);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user