An open API service indexing awesome lists of open source software.

https://github.com/narazaka/activehashie.js

The ActiveHash like something
https://github.com/narazaka/activehashie.js

activehash activerecord

Last synced: 6 months ago
JSON representation

The ActiveHash like something

Awesome Lists containing this project

README

        

# [activehashie.js - The ActiveHash like something](https://github.com/Narazaka/activehashie.js)

[![npm](https://img.shields.io/npm/v/activehashie.svg)](https://www.npmjs.com/package/activehashie)
[![npm license](https://img.shields.io/npm/l/activehashie.svg)](https://www.npmjs.com/package/activehashie)
[![npm download total](https://img.shields.io/npm/dt/activehashie.svg)](https://www.npmjs.com/package/activehashie)
[![npm download by month](https://img.shields.io/npm/dm/activehashie.svg)](https://www.npmjs.com/package/activehashie)

[![Dependency Status](https://david-dm.org/Narazaka/activehashie.js/status.svg)](https://david-dm.org/Narazaka/activehashie.js)
[![devDependency Status](https://david-dm.org/Narazaka/activehashie.js/dev-status.svg)](https://david-dm.org/Narazaka/activehashie.js?type=dev)
[![Travis Build Status](https://travis-ci.org/Narazaka/activehashie.js.svg?branch=master)](https://travis-ci.org/Narazaka/activehashie.js)
[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/github/Narazaka/activehashie.js?svg=true&branch=master)](https://ci.appveyor.com/project/Narazaka/activehashie-js)
[![codecov.io](https://codecov.io/github/Narazaka/activehashie.js/coverage.svg?branch=master)](https://codecov.io/github/Narazaka/activehashie.js?branch=master)
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/7657d5c839564b44b9b7f6e47c6a9896)](https://www.codacy.com/app/narazaka/activehashie-js?utm_source=github.com&utm_medium=referral&utm_content=Narazaka/activehashie.js&utm_campaign=Badge_Grade)

Immutable(currently) table whose api is like great [ActiveHash](https://github.com/zilkey/active_hash).

## Synopsys

```typescript
// TypeScript!
import {ActiveHash, ActiveHashRecord} from "activehashie";

class ItemGroupRecord extends ActiveHashRecord {
name: string;
get items() { return this.hasMany(Item); }
}

class ItemRecord extends ActiveHashRecord {
name: string;
type: string;
item_group_id: number;
get itemGroup() { return this.belongsTo(ItemGroup); }
}

const ItemGroup = new ActiveHash("ItemGroup", ItemGroupRecord);
const Item = new ActiveHash("Item", ItemRecord, { indexColumns: "item_group_id" });

Item.setData([
{id: 11, name: "n11", type: "a", item_group_id: 1},
{id: 12, name: "n12", type: "a", item_group_id: 1},
{id: 21, name: "n21", type: "a", item_group_id: 2},
{id: 22, name: "n22", type: "b", item_group_id: 2},
{id: 23, name: "n23", type: "b", item_group_id: 2},
{id: 31, name: "n31", type: "b", item_group_id: 3},
]);

ItemGroup.setData([
new ItemGroupRecord({id: 1, name: "g1"}),
new ItemGroupRecord({id: 2, name: "g2"}),
]);

Item.
where({id: [11, 21, 22]}).
where({item_group_id: 2}).
not({type: "a"}).
toArray()[0] ===
Item.find(22);
```

## See also

- [ActiveHash](https://github.com/zilkey/active_hash)

## License

This is released under [MIT License](http://narazaka.net/license/MIT?2017).