konsum-db
timeseries database on leveldb
example
import levelup from "levelup";
import leveldown from "leveldown";
import { Master, Category } from "konsum-db";
async function example() {
// open database
const db = await levelup(leveldown("example.db"));
const master = await Master.initialize(db);
// create category named EV
const ev = new Category("EV", master, { unit: "kWh" });
await ev.write(master.db);
// write entry
await ev.writeValue(db, Date.now(), 77.34);
}
example();
API
Table of Contents
- definePropertiesFromOptions
- setAttribute
- getAttribute
- optionJSON
- mapAttributes
- mapAttributesInverse
- Base
- description
- Category
- MASTER
- SCHEMA_VERSION_1
- SCHEMA_VERSION_2
- SCHEMA_VERSION_CURRENT
- CATEGORY_PREFIX
- VALUE_PREFIX
- unit
- fractionalDigits
- Master
- Meter
- Note
- secondsAsString
definePropertiesFromOptions
- See: Object.definedProperties()
- See: Object.getOwnPropertyDescriptor()
Create properties from options and default options. Already present properties (direct) are skipped. The attribute list from the class will be applied to the options and merged with the given set of properties.
class aClass {
static get attributes() {
return { with_default: { default: 77 }};
}
}
definePropertiesFromOptions(new aClass());
// equivalent to
Object.definedProperties(new aClass(),{ with_default: { value: 77 }})
Parameters
-
object
Object target object -
options
Object as passed to object constructor (optional, default{}
) -
properties
Object object properties (optional, default{}
)
setAttribute
Set Object attribute. The name may be a property path like 'a.b.c'.
Parameters
getAttribute
Deliver attribute value. The name may be a property path like 'a.b.c'.
Parameters
Returns any value associated with the given property name
optionJSON
Create json based on present options. In other words only produce key value pairs if value is defined.
Parameters
-
object
Object -
initial
Object (optional, default{}
) -
skip
Array<string> keys not to put in the result (optional, default[]
)
Returns Object initial + defined values
mapAttributes
Rename attributes. Filters out null, undefined and empty strings.
mapAttributes({a:1},{a:"a'"}) // {"a'": 1}
Parameters
Returns Object keys renamed after mapping
mapAttributesInverse
Same as mapAttributes but with the inverse mapping. Filters out null, undefined and empty strings
Parameters
Returns Object keys renamed after mapping
Base
Base
Parameters
Properties
key
Returns string
write
- See: {key}
Writes object into database. Leaves all other entries alone.
Parameters
-
db
levelup
readDetails
Get detail objects.
Parameters
-
factory
Class -
db
levelup -
options
Object
Returns Iterator<factory>
delete
Delete record from database.
Parameters
-
db
levelup
keyPrefix
Prefix of the key
Returns string
keyPrefixWith
Parameters
-
object
Base
Returns String prefix for a given (master) object
typeName
Name of the type in text dump
Returns string
attributes
Additional attributes to be persisted
entries
Get instances without owner.
Parameters
-
db
levelup -
prefix
string -
gte
string lowest name (optional, default"\u0000"
) -
lte
string highst name (optional, default"\uFFFF"
)
Returns AsyncIterator<Base>
entriesWith
Get instances with owner.
Parameters
-
db
levelup object
-
gte
string lowest name (optional, default"\u0000"
) -
lte
string highst name (optional, default"\uFFFF"
) -
owner
Object
Returns AsyncIterator<Base>
entry
Get a single instance.
Parameters
-
db
levelup -
key
string
Returns Base
description
Description of the content.
Returns string
Category
Extends Base
Value Category.
Parameters
Properties
-
name
string category name -
description
string -
unit
string physical unit -
fractionalDigits
number display precission
valueKey
Key for a given value.
Parameters
-
time
number seconds since epoch
Returns string key
writeValue
Write a time/value pair.
Parameters
getValue
Parameters
-
db
levelup -
time
number seconds since epoch
deleteValue
Parameters
-
db
levelup -
time
number seconds since epoch
values
Get values of the category.
Parameters
-
db
levelup -
options
Object
Returns Iterator<Object>
readStream
Get values of the category as ascii text stream with time and value on each line.
Parameters
-
db
levelup -
options
Object
Returns Readable
meters
Get Meters of the category.
Parameters
-
db
levelup -
options
Object
Returns Iterator<Meter>
notes
Get Notes of the category.
Parameters
-
db
levelup -
options
Object
Returns Iterator<Meter>
entries
Get categories.
Parameters
Returns AsyncIterator<Category>
MASTER
Prefix of the master record
Type: string
SCHEMA_VERSION_1
Outdated schema version
Type: string
SCHEMA_VERSION_2
Schema with type + name
Type: string
SCHEMA_VERSION_CURRENT
Schema version for newly created databases
CATEGORY_PREFIX
Prefix of the categories. Will be followed by the category name
Type: string
VALUE_PREFIX
Prefix of the values. Will be followed by the category name
Type: string
unit
Physical unit.
Returns string
fractionalDigits
Precission
Returns number
Master
Extends Base
Master record. Holds schema version.
Properties
-
schemaVersion
string
close
Close the underlaying database.
categories
List Categories.
Parameters
backup
Copy all data into out stream as long time text data.
Parameters
-
out
Writeable
restore
Restore database from input stream.
Parameters
-
input
Readable data from backup
initialize
Initialize database. checks/writes master record.
Parameters
-
db
levelup
Returns Master
Meter
Extends Base
Meter
Parameters
Properties
-
name
string category name -
description
string -
unit
string physical unit -
fractionalDigits
number display precission
Note
Extends Base
Hints placed on a category at a specific time.
Parameters
time
owner
options
secondsAsString
Format seconds as string left padded with '0'.
Parameters
-
seconds
number seconds since epoch
Returns string padded seconds