Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion src/constants/creator-list-sort.constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,15 @@ export const CREATOR_LIST_SORT_FIELDS = [

export type CreatorListSortField = (typeof CREATOR_LIST_SORT_FIELDS)[number];

/**
* Allowed sort orders for creator list endpoints.
*/
export const CREATOR_LIST_SORT_ORDERS = ['asc', 'desc'] as const;

export type CreatorListSortOrder = (typeof CREATOR_LIST_SORT_ORDERS)[number];

/** Default sort field used by creator list handlers. */
export const DEFAULT_CREATOR_LIST_SORT: CreatorListSortField = 'createdAt';

/** Default sort order used by creator list handlers. */
export const DEFAULT_CREATOR_LIST_ORDER = 'desc' as const;
export const DEFAULT_CREATOR_LIST_ORDER: CreatorListSortOrder = 'desc';
8 changes: 4 additions & 4 deletions src/modules/creator/creator.utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,15 @@ import { resolveSlugCollision } from '../../utils/slug.utils';
import { prisma } from '../../utils/prisma.utils';
import {
CREATOR_LIST_SORT_FIELDS,
CREATOR_LIST_SORT_ORDERS,
DEFAULT_CREATOR_LIST_ORDER,
DEFAULT_CREATOR_LIST_SORT,
type CreatorListSortField,
type CreatorListSortOrder,
} from '../../constants/creator-list-sort.constants';

export type CreatorSortField = CreatorListSortField;
export type SortOrder = 'asc' | 'desc';
export type SortOrder = CreatorListSortOrder;

export interface CreatorSortOptions {
field: CreatorSortField;
Expand All @@ -25,13 +27,11 @@ export function parseCreatorSortOptions(
sortBy?: string,
sortOrder?: string
): CreatorSortOptions {
const validOrders: SortOrder[] = ['asc', 'desc'];

const field = CREATOR_LIST_SORT_FIELDS.includes(sortBy as CreatorSortField)
? (sortBy as CreatorSortField)
: DEFAULT_CREATOR_LIST_SORT;

const order = validOrders.includes(sortOrder as SortOrder)
const order = CREATOR_LIST_SORT_ORDERS.includes(sortOrder as SortOrder)
? (sortOrder as SortOrder)
: DEFAULT_CREATOR_LIST_ORDER;

Expand Down
4 changes: 2 additions & 2 deletions src/modules/creators/creators.sort-direction.parse.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { z } from 'zod';
import {
CREATOR_LIST_SORT_ORDERS,
DEFAULT_CREATOR_LIST_ORDER,
type CreatorListSortOrder,
} from './creators.sort';
import { DEFAULT_CREATOR_LIST_ORDER } from '../../constants/creator-list-sort.constants';
} from '../../constants/creator-list-sort.constants';
import { normalizeCreatorListQueryStringValue } from './creators.query-string.utils';

const creatorListSortDirectionEnum = z.enum(CREATOR_LIST_SORT_ORDERS);
Expand Down
5 changes: 2 additions & 3 deletions src/modules/creators/creators.sort.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { Prisma } from '@prisma/client';
import {
CREATOR_LIST_SORT_FIELDS,
type CreatorListSortField,
type CreatorListSortOrder,
} from '../../constants/creator-list-sort.constants';

/**
Expand All @@ -10,10 +11,8 @@ import {
*/
export const CREATOR_LIST_SORT_OPTIONS = CREATOR_LIST_SORT_FIELDS;

export const CREATOR_LIST_SORT_ORDERS = ['asc', 'desc'] as const;

export type CreatorListSortOption = CreatorListSortField;
export type CreatorListSortOrder = (typeof CREATOR_LIST_SORT_ORDERS)[number];
export { type CreatorListSortOrder };

const CREATOR_LIST_SORT_FIELD_MAP: Record<
CreatorListSortOption,
Expand Down
Loading