import {Mutation, Resolvers, createMutation} from '@orion-js/graphql'
import {Inject} from '@orion-js/services'
import {schemaWithName, cloneSchema} from '@orion-js/schema'
import {WebsiteConfigsRepo} from 'app/providers/repos/WebsiteConfigs'
import {WebsiteConfigSchema} from 'app/providers/schemas/WebsiteConfig'
// Define a schema with only the fields we want to update
const UpdatesSchema = cloneSchema({
name: 'WebsiteConfigUpdates',
schema: WebsiteConfigSchema,
pickFields: ['name', 'description'],
})
const UpdateWebsiteConfigParams = schemaWithName('UpdateWebsiteConfigParams', {
websiteId: {type: String},
updates: {type: UpdatesSchema}
})
@Resolvers()
export class UpdateWebsiteConfigResolvers {
@Inject(() => WebsiteConfigsRepo)
private websiteConfigsRepo: WebsiteConfigsRepo
@Mutation()
updateWebsiteConfig = createMutation({
params: UpdateWebsiteConfigParams,
returns: WebsiteConfigSchema,
resolve: async params => {
return await this.websiteConfigsRepo.updateWebsiteConfig(params.websiteId, params.updates)
}
})
}