123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- import ContentDirectoryCommandBase from '../../base/ContentDirectoryCommandBase'
- import { Actor } from '@joystream/types/content-directory'
- import ExitCodes from '../../ExitCodes'
- export default class RemoveEntityCommand extends ContentDirectoryCommandBase {
- static description = 'Removes a single entity by id (can be executed in Member, Curator or Lead context)'
- static flags = {
- context: ContentDirectoryCommandBase.contextFlag,
- }
- static args = [
- {
- name: 'id',
- required: true,
- description: 'ID of the entity to remove',
- },
- ]
- async run() {
- let {
- args: { id },
- flags: { context },
- } = this.parse(RemoveEntityCommand)
- const entity = await this.getEntity(id, undefined, undefined, false)
- const [, entityClass] = await this.classEntryByNameOrId(entity.class_id.toString())
- if (!context) {
- context = await this.promptForContext()
- }
- const account = await this.getRequiredSelectedAccount()
- const actor: Actor = await this.getActor(context, entityClass)
- if (!actor.isOfType('Curator') && !this.isActorEntityController(actor, entity, false)) {
- this.error('You are not the entity controller!', { exit: ExitCodes.AccessDenied })
- }
- await this.requireConfirmation(
- `Are you sure you want to remove entity ${id} of class ${entityClass.name.toString()}?`
- )
- await this.requestAccountDecoding(account)
- await this.sendAndFollowNamedTx(account, 'contentDirectory', 'removeEntity', [actor, id])
- }
- }
|