20 lines
538 B
TypeScript
20 lines
538 B
TypeScript
const fields = new Map();
|
|
|
|
export const getFieldsForModel = (target: any) => {
|
|
return fields.get(target.constructor.name);
|
|
};
|
|
|
|
/**
|
|
* A decorator that records this key as a serializable field on the model.
|
|
* Properties decorated with @Field will be included in API requests by default.
|
|
*
|
|
* @param target
|
|
* @param propertyKey
|
|
*/
|
|
const Field = <T>(target: any, propertyKey: keyof T) => {
|
|
const className = target.constructor.name;
|
|
fields.set(className, [...(fields.get(className) || []), propertyKey]);
|
|
};
|
|
|
|
export default Field;
|