2021-08-30 03:54:09 +03:00
|
|
|
import { Path, Poke, uxToHex, PatpNoSig } from '../lib';
|
|
|
|
import { MdAppName, Association, Metadata, MetadataUpdate, MetadataUpdateAdd, MetadataUpdateRemove, MetadataEditField, MetadataUpdateEdit } from './types';
|
2021-02-25 06:54:00 +03:00
|
|
|
|
2021-07-21 05:26:33 +03:00
|
|
|
export const METADATA_UPDATE_VERSION = 2;
|
2021-04-22 17:17:39 +03:00
|
|
|
|
|
|
|
export const metadataAction = <T extends MetadataUpdate>(data: T, version: number = METADATA_UPDATE_VERSION): Poke<T> => ({
|
2021-02-25 06:54:00 +03:00
|
|
|
app: 'metadata-push-hook',
|
2021-04-22 17:17:39 +03:00
|
|
|
mark: `metadata-update-${version}`,
|
2021-02-25 06:54:00 +03:00
|
|
|
json: data
|
|
|
|
});
|
|
|
|
|
|
|
|
export const add = (
|
|
|
|
ship: PatpNoSig,
|
2021-08-30 03:54:09 +03:00
|
|
|
appName: MdAppName,
|
2021-02-25 06:54:00 +03:00
|
|
|
resource: Path,
|
|
|
|
group: Path,
|
|
|
|
title: string,
|
|
|
|
description: string,
|
|
|
|
dateCreated: string,
|
|
|
|
color: string,
|
2021-07-07 19:24:52 +03:00
|
|
|
moduleName: string
|
2021-02-25 06:54:00 +03:00
|
|
|
): Poke<MetadataUpdateAdd> => metadataAction({
|
|
|
|
add: {
|
|
|
|
group,
|
|
|
|
resource: {
|
|
|
|
resource,
|
2021-07-07 19:24:52 +03:00
|
|
|
'app-name': appName
|
2021-02-25 06:54:00 +03:00
|
|
|
},
|
|
|
|
metadata: {
|
|
|
|
title,
|
|
|
|
description,
|
|
|
|
color,
|
|
|
|
'date-created': dateCreated,
|
|
|
|
creator: `~${ship}`,
|
2021-04-22 17:17:39 +03:00
|
|
|
config: { graph: moduleName },
|
2021-02-25 06:54:00 +03:00
|
|
|
picture: '',
|
2021-04-22 17:17:39 +03:00
|
|
|
hidden: false,
|
2021-02-25 06:54:00 +03:00
|
|
|
preview: false,
|
|
|
|
vip: ''
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
export { add as metadataAdd };
|
|
|
|
|
|
|
|
export const remove = (
|
2021-08-30 03:54:09 +03:00
|
|
|
appName: MdAppName,
|
2021-02-25 06:54:00 +03:00
|
|
|
resource: string,
|
|
|
|
group: string
|
2021-08-30 03:54:09 +03:00
|
|
|
): Poke<MetadataUpdateRemove> => metadataAction<MetadataUpdateRemove>({
|
2021-02-25 06:54:00 +03:00
|
|
|
remove: {
|
|
|
|
group,
|
|
|
|
resource: {
|
|
|
|
resource,
|
2021-07-07 19:24:52 +03:00
|
|
|
'app-name': appName
|
2021-02-25 06:54:00 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
export { remove as metadataRemove };
|
|
|
|
|
2021-07-09 05:14:49 +03:00
|
|
|
export const edit = (
|
|
|
|
association: Association,
|
|
|
|
edit: MetadataEditField
|
2021-08-30 03:54:09 +03:00
|
|
|
): Poke<MetadataUpdateEdit> => metadataAction<MetadataUpdateEdit>({
|
2021-07-09 05:14:49 +03:00
|
|
|
edit: {
|
|
|
|
group: association.group,
|
|
|
|
resource: {
|
|
|
|
resource: association.resource,
|
|
|
|
'app-name': association['app-name']
|
|
|
|
},
|
|
|
|
edit
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
export { edit as metadataEdit };
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @deprecated use {@link edit} instead
|
|
|
|
*/
|
2021-02-25 06:54:00 +03:00
|
|
|
export const update = (
|
|
|
|
association: Association,
|
|
|
|
newMetadata: Partial<Metadata>
|
|
|
|
): Poke<MetadataUpdateAdd> => {
|
|
|
|
const metadata = { ...association.metadata, ...newMetadata };
|
|
|
|
metadata.color = uxToHex(metadata.color);
|
2021-08-30 03:54:09 +03:00
|
|
|
return metadataAction<MetadataUpdateAdd>({
|
2021-02-25 06:54:00 +03:00
|
|
|
add: {
|
|
|
|
group: association.group,
|
|
|
|
resource: {
|
|
|
|
resource: association.resource,
|
2021-07-07 19:24:52 +03:00
|
|
|
'app-name': association['app-name']
|
2021-02-25 06:54:00 +03:00
|
|
|
},
|
|
|
|
metadata
|
|
|
|
}
|
|
|
|
});
|
2021-07-07 19:24:52 +03:00
|
|
|
};
|
2021-02-25 06:54:00 +03:00
|
|
|
|
2021-06-09 03:48:28 +03:00
|
|
|
export { update as metadataUpdate };
|