11import { AxiosResponse } from 'axios'
22import { ApiRepository } from '../../../core/infra/repositories/ApiRepository'
3+ import { TermsOfAccess } from '../../../datasets/domain/models/Dataset'
34import { CreateTemplateDTO } from '../../domain/dtos/CreateTemplateDTO'
5+ import { UpdateTemplateLicenseTermsDTO } from '../../domain/dtos/UpdateTemplateLicenseTermsDTO'
6+ import { UpdateTemplateMetadataDTO } from '../../domain/dtos/UpdateTemplateMetadataDTO'
47import { Template } from '../../domain/models/Template'
58import { ITemplatesRepository } from '../../domain/repositories/ITemplatesRepository'
69import { TemplatePayload } from './transformers/TemplatePayload'
10+ import { transformTemplateTermsOfAccessToUpdatePayload } from './transformers/templateTermsOfAccessTransformers'
711import {
812 transformTemplatePayloadToTemplate ,
913 transformTemplatePayloadsToTemplates
@@ -26,6 +30,32 @@ export class TemplatesRepository extends ApiRepository implements ITemplatesRepo
2630 } )
2731 }
2832
33+ public async updateTemplateMetadata (
34+ templateId : number ,
35+ payload : UpdateTemplateMetadataDTO ,
36+ replace = false
37+ ) : Promise < void > {
38+ return this . updateTemplate ( templateId , 'metadata' , payload , { replace } )
39+ }
40+
41+ public async updateTemplateLicenseTerms (
42+ templateId : number ,
43+ payload : UpdateTemplateLicenseTermsDTO
44+ ) : Promise < void > {
45+ return this . updateTemplate ( templateId , 'licenseTerms' , payload )
46+ }
47+
48+ public async updateTemplateTermsOfAccess (
49+ templateId : number ,
50+ termsOfAccess : TermsOfAccess
51+ ) : Promise < void > {
52+ return this . updateTemplate (
53+ templateId ,
54+ 'access' ,
55+ transformTemplateTermsOfAccessToUpdatePayload ( termsOfAccess )
56+ )
57+ }
58+
2959 public async getTemplate ( templateId : number ) : Promise < Template > {
3060 return this . doGet ( `/dataverses/${ templateId } /template` , true )
3161 . then ( ( response : AxiosResponse < { data : TemplatePayload } > ) =>
@@ -55,4 +85,17 @@ export class TemplatesRepository extends ApiRepository implements ITemplatesRepo
5585 throw error
5686 } )
5787 }
88+
89+ private async updateTemplate (
90+ templateId : number ,
91+ operation : 'metadata' | 'licenseTerms' | 'access' ,
92+ payload : object ,
93+ queryParams : object = { }
94+ ) : Promise < void > {
95+ return this . doPut ( `/dataverses/${ templateId } /${ operation } ` , payload , queryParams )
96+ . then ( ( ) => undefined )
97+ . catch ( ( error ) => {
98+ throw error
99+ } )
100+ }
58101}
0 commit comments