diff --git a/packages/api/src/resolvers/labels/index.ts b/packages/api/src/resolvers/labels/index.ts index 8af5ec27c..f5a0a3cd4 100644 --- a/packages/api/src/resolvers/labels/index.ts +++ b/packages/api/src/resolvers/labels/index.ts @@ -24,8 +24,8 @@ import { analytics } from '../../utils/analytics' import { env } from '../../env' import { User } from '../../entity/user' import { Label } from '../../entity/label' -import { getRepository, ILike, In } from 'typeorm' -import { setClaims } from '../../entity/utils' +import { ILike, In } from 'typeorm' +import { getRepository, setClaims } from '../../entity/utils' import { deleteLabelInPages, getPageById, updatePage } from '../../elastic' import { createPubSubClient } from '../../datalayer/pubsub' import { AppDataSource } from '../../server' @@ -46,6 +46,11 @@ export const labelsResolver = authorized( const user = await getRepository(User).findOne({ where: { id: uid }, relations: ['labels'], + order: { + labels: { + createdAt: 'DESC', + }, + } }) if (!user) { return { @@ -122,75 +127,6 @@ export const createLabelResolver = authorized< } }) -export const updateLabelResolver = authorized< - UpdateLabelSuccess, - UpdateLabelError, - MutationUpdateLabelArgs ->(async (_, { input }, { claims: { uid }, log }) => { - log.info('updateLabelResolver') - - try { - const { name, color, description, labelId } = input - - const user = await getRepository(User).findOneBy({ id: uid }) - if (!user) { - return { - errorCodes: [UpdateLabelErrorCode.Unauthorized], - } - } - - const label = await getRepository(Label).findOne({ - where: { id: labelId }, - relations: ['user'], - }) - if (!label) { - return { - errorCodes: [UpdateLabelErrorCode.NotFound], - } - } - - if (!label) { - return { - errorCodes: [UpdateLabelErrorCode.NotFound], - } - } - - const result = await AppDataSource.transaction(async (t) => { - await setClaims(t, uid) - return await t.getRepository(Label).update( - { id: labelId }, { - name: name, - description: description || undefined, - color: color, - }) - }) - - log.info('Updating a label', { - result, - labels: { - source: 'resolver', - resolver: 'updateLabelResolver', - }, - }) - - if (!result) { - log.info('failed to update') - return { - errorCodes: [UpdateLabelErrorCode.BadRequest], - } - } - - log.info('updated successfully') - - return { label: label } - } catch (error) { - log.error('error', error) - return { - errorCodes: [UpdateLabelErrorCode.BadRequest], - } - } -}) - export const deleteLabelResolver = authorized< DeleteLabelSuccess, DeleteLabelError, @@ -322,3 +258,65 @@ export const setLabelsResolver = authorized< } } }) + +export const updateLabelResolver = authorized< + UpdateLabelSuccess, + UpdateLabelError, + MutationUpdateLabelArgs +>(async (_, { input }, { claims: { uid }, log }) => { + log.info('updateLabelResolver') + + try { + const { name, color, description, labelId } = input + const user = await getRepository(User).findOneBy({ id: uid }) + if (!user) { + return { + errorCodes: [UpdateLabelErrorCode.Unauthorized], + } + } + + const label = await getRepository(Label).findOne({ + where: { id: labelId }, + relations: ['user'], + }) + if (!label) { + return { + errorCodes: [UpdateLabelErrorCode.NotFound], + } + } + + const result = await AppDataSource.transaction(async (t) => { + await setClaims(t, uid) + return await t.getRepository(Label).update( + { id: labelId }, { + name: name, + description: description || undefined, + color: color, + }) + }) + + log.info('Updating a label', { + result, + labels: { + source: 'resolver', + resolver: 'updateLabelResolver', + }, + }) + + if (!result) { + log.info('failed to update') + return { + errorCodes: [UpdateLabelErrorCode.BadRequest], + } + } + + log.info('updated successfully') + + return { label: label } + } catch (error) { + log.error('error updating label', error) + return { + errorCodes: [UpdateLabelErrorCode.BadRequest], + } + } +}) \ No newline at end of file