123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- // ████████╗███████╗ █████╗ ██████╗ ██████╗ ██████╗ ██╗ ██╗███╗ ██╗
- // ╚══██╔══╝██╔════╝██╔══██╗██╔══██╗██╔══██╗██╔═══██╗██║ ██║████╗ ██║
- // ██║ █████╗ ███████║██████╔╝██║ ██║██║ ██║██║ █╗ ██║██╔██╗ ██║
- // ██║ ██╔══╝ ██╔══██║██╔══██╗██║ ██║██║ ██║██║███╗██║██║╚██╗██║
- // ██║ ███████╗██║ ██║██║ ██║██████╔╝╚██████╔╝╚███╔███╔╝██║ ╚████║
- // ╚═╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═════╝ ╚═════╝ ╚══╝╚══╝ ╚═╝ ╚═══╝
- //
- module.exports = require('machine').build({
- friendlyName: 'Teardown',
- description: 'Destroys a connection manager so that a server can be shut down cleanly.',
- inputs: {
- identity: {
- description: 'The datastore identity to teardown.',
- required: true,
- example: '==='
- },
- datastores: {
- description: 'An object containing all of the data stores that have been registered.',
- required: true,
- example: '==='
- },
- modelDefinitions: {
- description: 'An object containing all of the model definitions that have been registered.',
- required: true,
- example: '==='
- }
- },
- exits: {
- success: {
- description: 'The data store was initialized successfully.'
- },
- badConfiguration: {
- description: 'The configuration was invalid.'
- }
- },
- fn: function teardown(inputs, exits) {
- // Dependencies
- var Helpers = require('./private');
- var datastore = inputs.datastores[inputs.identity];
- if (!datastore) {
- return exits.error(new Error('Invalid data store identity. No data store exist with that identity.'));
- }
- // ╔╦╗╔═╗╔═╗╔╦╗╦═╗╔═╗╦ ╦ ┌┬┐┌─┐┌┐┌┌─┐┌─┐┌─┐┬─┐
- // ║║║╣ ╚═╗ ║ ╠╦╝║ ║╚╦╝ │││├─┤│││├─┤│ ┬├┤ ├┬┘
- // ═╩╝╚═╝╚═╝ ╩ ╩╚═╚═╝ ╩ ┴ ┴┴ ┴┘└┘┴ ┴└─┘└─┘┴└─
- var manager = datastore.manager;
- if (!manager) {
- return exits.error(new Error('Missing manager for this data store. The data store may be in the process of being destroyed.'));
- }
- Helpers.connection.destroyManager(manager, function destroyManagerCb(err) {
- if (err) {
- return exits.error(err);
- }
- // Delete the rest of the data from the data store
- delete inputs.datastores[inputs.identity];
- // Delete the model definitions
- delete inputs.modelDefinitions[inputs.identity];
- return exits.success();
- });
- }
- });
|