Skip to content

Commit e634583

Browse files
authored
feat: support partial objects in TS parameter class constructors (#736)
1 parent eda8f72 commit e634583

1 file changed

Lines changed: 11 additions & 7 deletions

File tree

src/coalesce-vue/src/api-client.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,11 @@ export interface DataSourceParameters {
9797
refResponse?: boolean;
9898
}
9999
export class DataSourceParameters {
100-
constructor() {
100+
constructor(data?: Partial<DataSourceParameters>) {
101101
this.includes = null;
102102
this.dataSource = null;
103103
this.refResponse = false;
104+
Object.assign(this, data);
104105
}
105106
}
106107

@@ -118,9 +119,10 @@ export class SaveParameters<
118119
// eslint-disable-next-line @typescript-eslint/no-unused-vars
119120
T extends Model<ModelType>,
120121
> extends DataSourceParameters {
121-
constructor() {
122-
super();
122+
constructor(data?: Partial<SaveParameters<T>>) {
123+
super(data);
123124
this.fields = null;
125+
Object.assign(this, data);
124126
}
125127
}
126128

@@ -147,10 +149,11 @@ export interface FilterParameters extends DataSourceParameters {
147149
};
148150
}
149151
export class FilterParameters extends DataSourceParameters {
150-
constructor() {
151-
super();
152+
constructor(data?: Partial<FilterParameters>) {
153+
super(data);
152154
this.search = null;
153155
this.filter = {};
156+
Object.assign(this, data);
154157
}
155158
}
156159

@@ -182,14 +185,15 @@ export interface ListParameters extends FilterParameters {
182185
fields?: string[] | null;
183186
}
184187
export class ListParameters extends FilterParameters {
185-
constructor() {
186-
super();
188+
constructor(data?: Partial<ListParameters>) {
189+
super(data);
187190
this.page = 1;
188191
this.pageSize = 10;
189192
this.noCount = null;
190193
this.orderBy = null;
191194
this.orderByDescending = null;
192195
this.fields = null;
196+
Object.assign(this, data);
193197
}
194198
}
195199

0 commit comments

Comments
 (0)