Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zimme/meteor-collection-behaviours
Define and attach behaviours to collections
https://github.com/zimme/meteor-collection-behaviours
Last synced: 3 months ago
JSON representation
Define and attach behaviours to collections
- Host: GitHub
- URL: https://github.com/zimme/meteor-collection-behaviours
- Owner: zimme
- License: mit
- Created: 2014-09-17T14:27:45.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2016-05-26T14:32:28.000Z (over 8 years ago)
- Last Synced: 2024-05-01T13:49:02.392Z (8 months ago)
- Language: CoffeeScript
- Homepage: https://atmospherejs.com/zimme/collection-behaviours
- Size: 78.1 KB
- Stars: 19
- Watchers: 3
- Forks: 8
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
[![Gitter]](https://gitter.im/zimme/meteor-collection-behaviours)
[![Code Climate]](https://codeclimate.com/github/zimme/meteor-collection-behaviours)
[![License]](https://github.com/zimme/meteor-collection-timestampable/blob/master/LICENSE.md)# Behaviours for collections
Define and attach behaviours to collections.
## Installation
```sh
meteor add zimme:collection-behaviours
```## Available behaviours
The behaviours are split into separate packages, which depend on this package.
* `zimme:collection-softremovable`
This behaviour adds `.softRemove()` and `.restore()` to collections, which
make it possible to mark documents as removed. It also tracks the time and
user for the last soft remove and restore.https://atmospherejs.com/zimme/collection-softremovable
* `zimme:collection-timestampable`
This behaviour timestamps documents on insert and update. It also tracks the
user who made the last insert or update.https://atmospherejs.com/zimme/collection-timestampable
## Usage
### Define a behaviour
```js
CollectionBehaviours.define('behaviourName', function(options) {
var collection = this.collection;// Setup some default options for the behaviour
var defaultOptions = {
exampleOption: "I'm a default value"
};// Make the behaviour configurable both globally and locally and uses the
// defaults if not configured.
options = _.defaults(options, this.options, defaultOptions);// Behaviour logic goes here
});
```### Attach behaviours
```js
// Attach a behavour using the collection identifier
Meteor.users.attachBehaviour('timestampable');// Attach a behaviour to a colleciton using CollectionBehaviours
CollectionBehaviours.attach(Meteor.users, 'timestampable');// Attach multiple behaviours to a collection with default options
CollectionBehaviours.attach(Meteor.users, ['timestampable', 'softremovable']);// Attach multiple behaviours to a collcetion with custom options
CollectionBehaviours.attach(Meteor.users, {
timestampable: {
createdAt: 'insertedAt',
},
softremovable: {
removedBy: 'deletedBy',
},
});// Attach a behaviour to multiple collections
CollectionBehaviours.attach([Meteor.users, Posts], 'timestampable');// Attach multiple behaviours to multiple collections
CollectionBehaviours.attach(
[Meteor.users, Posts],
['timestampable', 'softremovable']
);
```### Configuration
```js
// Configure behaviour globally i.e. set you own defaults
CollectionBehaviours.configure('behaviourName', {
exampleOption: "I'm a global value"
});// Attach behaviour with custom options
Meteor.users.attachBehaviour('behaviourName', {
exampleOption: "I'm a local value"
});// Attach behaviour with custom options, using CollectionBehaviours
CollectionBehaviours.attach(Meteor.users, 'behaviourName', {
exampleOption: "I'm a local value"
});
```## API
### CollectionBehaviours.define
Used to defined a new behaviour or overwrite an already defined behaviour.
```js
CollectionBehaviours.define('behaviourName', behaviourFunciton, options);
```* `'behaviourName'`: Required. The name of the behaviour.
* `behaviourFunction`: Required. A `Function` that takes `options` as an
argument. This function is the behaviour.
* `options`: Optional. `Object` with the options for the behaviour.#### Options
* `replace`: Optional. Set to `true` to replace a previously defined behaviour.
### CollectionBehaviours.configure
Used to confgure behaviours globally.
```js
// Configure single behaviour
ColectionBehaviours.configure('behavioursName', options);// Configure multiple behaviours
CollectionBehaviours.configure({
timestampable: {
createdAt: 'insertedAt',
updatedBy: 'modifiedBy'
},
softremovable: {
removed: 'deleted'
}
});
```* `'behaviourName'`: Required.
If set to a `String`, 'behaviourName', will configure the named behaviour.
If set to an `Object`, where the keys are named behaviours and the values are
the options for the behaviours, will configure those named behaviours.* `options`: Optional if `behaviourName` is an `Object`.
See specific behaviour for available options.### <CollectionIdentifier>.attachBehaviour
Used to attach behaviour(s) to the collection.
```js
Meteor.users.attachBehaviour(behaviourNameOrFunction, options);
```* `behaviourNameOrFunction`: Required.
If set to a `String`, `'behaviourName'`, will attach the named behaviour.
If set to a `Function`, will attach that function as an anonymous behaviour.
If set to an `Array` of `String`/`Function`, will attach those named or
anonymous behaviours.
If set to an `Object`, where the keys are named behaviours and the values are
the behaviours' options, will attach those named behaviours with the provided
options.
* `options`: Optional. See specific behaviour for available options.### CollectionBehaviours.attach
Used to attach behaviour(s) to collection(s).
```js
CollectionBehaviours.attach(ColletionIdentifier, behaviourNameOrFunction, options);
```* `CollectionIdentifier`: Required. The collection or `Array` of collections
you want to attach the behaviour(s) to.
* `behaviourNameOrFunction`: Required.
If set to a `String`, `'behaviourName'`, will attach the named behaviour.
If set to a `Function`, will attach that function as an anonymous behaviour.
If set to an `Array` of `String`/`Function`, will attach those named or
anonymous behaviours.
If set to an `Object`, where the keys are named behaviours and the values are
the behaviours' options, will attach those named behaviours with the provided
options.
* `options`: Optional. See specific behaviour for available options.## Notes
* `CollectionBehaviours.config` is an alias for `CollectionBehaviours.configure`
* The inspiration for this package came from
[`sewdn:collection-behaviours`][sewdn][Atmosphere]: https://atmospherejs.com
[Code Climate]: https://img.shields.io/codeclimate/github/zimme/meteor-collection-behaviours.svg
[Gitter]: https://img.shields.io/badge/gitter-join_chat-brightgreen.svg
[License]: https://img.shields.io/badge/license-MIT-blue.svg
[sewdn]: https://github.com/Sewdn/meteor-collection-behaviours