mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-25 11:20:07 +08:00
refactor(ocr): simplify response handling by removing wrapper objects
Remove unnecessary response wrapper objects ({ data: ... }) from OCR service methods and update types accordingly
Update API handlers to maintain consistent response structure
This commit is contained in:
parent
e0781e1bb0
commit
74e7979764
@ -213,28 +213,33 @@ export const apiHandlers: ApiImplementation = {
|
||||
|
||||
'/ocr/providers': {
|
||||
GET: async ({ query }) => {
|
||||
return ocrService.listProviders(query)
|
||||
const result = await ocrService.listProviders(query)
|
||||
return { data: result }
|
||||
},
|
||||
POST: async ({ body }) => {
|
||||
return ocrService.createProvider(body)
|
||||
const result = await ocrService.createProvider(body)
|
||||
return { data: result }
|
||||
}
|
||||
},
|
||||
|
||||
'/ocr/providers/:id': {
|
||||
GET: async ({ params }) => {
|
||||
return ocrService.getProvider(params.id)
|
||||
const result = await ocrService.getProvider(params.id)
|
||||
return { data: result }
|
||||
},
|
||||
PATCH: async ({ params, body }) => {
|
||||
if (params.id !== body.id) {
|
||||
throw new Error('Provider ID in path does not match ID in body')
|
||||
}
|
||||
return ocrService.updateProvider(params.id, body)
|
||||
const result = await ocrService.updateProvider(params.id, body)
|
||||
return { data: result }
|
||||
},
|
||||
PUT: async ({ params, body }) => {
|
||||
if (params.id !== body.id) {
|
||||
throw new Error('Provider ID in path does not match ID in body')
|
||||
}
|
||||
return ocrService.replaceProvider(body)
|
||||
const result = await ocrService.replaceProvider(body)
|
||||
return { data: result }
|
||||
},
|
||||
DELETE: async ({ params }) => {
|
||||
return ocrService.deleteProvider(params.id)
|
||||
|
||||
@ -6,8 +6,7 @@ import type {
|
||||
DbOcrProviderCreate,
|
||||
DbOcrProviderReplace,
|
||||
DbOcrProviderUpdate,
|
||||
OcrProviderId,
|
||||
UpdateOcrProviderResponse
|
||||
OcrProviderId
|
||||
} from '@types'
|
||||
import { BuiltinOcrProviderIds, isDbOcrProvider } from '@types'
|
||||
import dayjs from 'dayjs'
|
||||
@ -112,7 +111,7 @@ export class OcrProviderRepository {
|
||||
/**
|
||||
* Update OCR provider (partial update)
|
||||
*/
|
||||
public async update(id: OcrProviderId, update: DbOcrProviderUpdate): Promise<UpdateOcrProviderResponse> {
|
||||
public async update(id: OcrProviderId, update: DbOcrProviderUpdate): Promise<DbOcrProvider> {
|
||||
try {
|
||||
const existing = await this.findById(id)
|
||||
|
||||
@ -134,7 +133,7 @@ export class OcrProviderRepository {
|
||||
.returning()
|
||||
|
||||
logger.info(`Updated OCR provider: ${id}`)
|
||||
return { data: updated }
|
||||
return updated
|
||||
} catch (error) {
|
||||
logger.error(`Failed to update OCR provider ${id}`, error as Error)
|
||||
throw error
|
||||
|
||||
@ -1,21 +1,17 @@
|
||||
import { loggerService } from '@logger'
|
||||
import { ocrProviderRepository } from '@main/data/repositories/OcrProviderRepository'
|
||||
import type {
|
||||
CreateOcrProviderRequest,
|
||||
CreateOcrProviderResponse,
|
||||
DbOcrProvider,
|
||||
GetOcrProviderResponse,
|
||||
ListOcrProvidersQuery,
|
||||
ListOcrProvidersResponse,
|
||||
OcrParams,
|
||||
OcrProvider,
|
||||
OcrProviderBusiness,
|
||||
OcrProviderCreateBusiness,
|
||||
OcrProviderKeyBusiness,
|
||||
OcrProviderReplaceBusiness,
|
||||
OcrProviderUpdateBusiness,
|
||||
OcrResult,
|
||||
ReplaceOcrProviderRequest,
|
||||
ReplaceOcrProviderResponse,
|
||||
SupportedOcrFile,
|
||||
UpdateOcrProviderRequest,
|
||||
UpdateOcrProviderResponse
|
||||
SupportedOcrFile
|
||||
} from '@types'
|
||||
import { BuiltinOcrProviderIdMap } from '@types'
|
||||
|
||||
@ -119,7 +115,7 @@ class OcrService {
|
||||
/**
|
||||
* Get list of OCR providers
|
||||
*/
|
||||
public async listProviders(query?: ListOcrProvidersQuery): Promise<ListOcrProvidersResponse> {
|
||||
public async listProviders(query?: ListOcrProvidersQuery): Promise<OcrProviderBusiness[]> {
|
||||
try {
|
||||
await this.ensureInitialized()
|
||||
const providers = await ocrProviderRepository.findAll()
|
||||
@ -132,7 +128,7 @@ class OcrService {
|
||||
}
|
||||
|
||||
logger.debug(`Listed ${result.length} OCR providers`)
|
||||
return { data: result }
|
||||
return result
|
||||
} catch (error) {
|
||||
logger.error('Failed to list OCR providers', error as Error)
|
||||
throw error
|
||||
@ -142,12 +138,12 @@ class OcrService {
|
||||
/**
|
||||
* Get OCR provider by ID
|
||||
*/
|
||||
public async getProvider(providerId: OcrProviderKeyBusiness): Promise<GetOcrProviderResponse> {
|
||||
public async getProvider(providerId: OcrProviderKeyBusiness): Promise<OcrProviderBusiness> {
|
||||
try {
|
||||
await this.ensureInitialized()
|
||||
const provider = await ocrProviderRepository.findById(providerId)
|
||||
logger.debug(`Retrieved OCR provider: ${providerId}`)
|
||||
return { data: provider }
|
||||
return provider
|
||||
} catch (error) {
|
||||
logger.error(`Failed to get OCR provider ${providerId}`, error as Error)
|
||||
throw error
|
||||
@ -157,12 +153,12 @@ class OcrService {
|
||||
/**
|
||||
* Create new OCR provider
|
||||
*/
|
||||
public async createProvider(data: CreateOcrProviderRequest): Promise<CreateOcrProviderResponse> {
|
||||
public async createProvider(data: OcrProviderCreateBusiness): Promise<OcrProviderBusiness> {
|
||||
try {
|
||||
await this.ensureInitialized()
|
||||
const result = await ocrProviderRepository.create(data)
|
||||
logger.info(`Created OCR provider: ${data.id}`)
|
||||
return { data: result }
|
||||
return result
|
||||
} catch (error) {
|
||||
logger.error(`Failed to create OCR provider ${data.id}`, error as Error)
|
||||
throw error
|
||||
@ -174,8 +170,8 @@ class OcrService {
|
||||
*/
|
||||
public async updateProvider(
|
||||
id: OcrProviderKeyBusiness,
|
||||
data: UpdateOcrProviderRequest
|
||||
): Promise<UpdateOcrProviderResponse> {
|
||||
data: OcrProviderUpdateBusiness
|
||||
): Promise<OcrProviderBusiness> {
|
||||
try {
|
||||
await this.ensureInitialized()
|
||||
const result = await ocrProviderRepository.update(id, data)
|
||||
@ -190,7 +186,7 @@ class OcrService {
|
||||
/**
|
||||
* Replace OCR provider (full update)
|
||||
*/
|
||||
public async replaceProvider(data: ReplaceOcrProviderRequest): Promise<ReplaceOcrProviderResponse> {
|
||||
public async replaceProvider(data: OcrProviderReplaceBusiness): Promise<OcrProviderBusiness> {
|
||||
try {
|
||||
await this.ensureInitialized()
|
||||
const result = await ocrProviderRepository.replace(data)
|
||||
@ -285,7 +281,7 @@ class OcrService {
|
||||
const availableProviders: DbOcrProvider[] = []
|
||||
const capFilter = (provider: OcrProvider) => provider.capabilities.image
|
||||
|
||||
for (const provider of providers.data.filter(capFilter)) {
|
||||
for (const provider of providers.filter(capFilter)) {
|
||||
if (await this._isProviderAvailable(provider)) {
|
||||
availableProviders.push(provider)
|
||||
}
|
||||
|
||||
@ -33,20 +33,31 @@ export const UpdateOcrProviderRequestSchema = z.object({
|
||||
name: OcrProviderNameSchema.optional(),
|
||||
config: OcrProviderConfigSchema.partial().optional()
|
||||
})
|
||||
|
||||
export type UpdateOcrProviderRequest = z.infer<typeof UpdateOcrProviderRequestSchema>
|
||||
|
||||
export const UpdateOcrProviderResponseSchema = z.object({
|
||||
data: DbOcrProviderSchema
|
||||
})
|
||||
|
||||
export type UpdateOcrProviderResponse = z.infer<typeof UpdateOcrProviderResponseSchema>
|
||||
|
||||
export const CreateOcrProviderRequestSchema = OcrProviderSchema
|
||||
|
||||
export type CreateOcrProviderRequest = z.infer<typeof CreateOcrProviderRequestSchema>
|
||||
|
||||
export const CreateOcrProviderResponseSchema = z.object({
|
||||
data: DbOcrProviderSchema
|
||||
})
|
||||
|
||||
export type CreateOcrProviderResponse = z.infer<typeof CreateOcrProviderResponseSchema>
|
||||
|
||||
export const ReplaceOcrProviderRequestSchema = OcrProviderSchema
|
||||
|
||||
export type ReplaceOcrProviderRequest = z.infer<typeof ReplaceOcrProviderRequestSchema>
|
||||
|
||||
export const ReplaceOcrProviderResponseSchema = z.object({
|
||||
data: DbOcrProviderSchema
|
||||
})
|
||||
|
||||
export type ReplaceOcrProviderResponse = z.infer<typeof ReplaceOcrProviderResponseSchema>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user