@paxperscientiam/ts-models
v0.0.2
Published
Base classes for model classes that store data in browser's localstorage.
Downloads
26
Readme
What is?
This project provides two classes for building models with data stored in localstorage.
Definitions:
interface IStruct {
[prop: string]: string;
}
export declare class Model {
protected _id: number;
private _modelStore;
private _struct;
private _namespace;
constructor(namespace: string, struct: string[], id?: number);
private updateRegistry;
save(data: IStruct, overwrite?: boolean): void;
getItem(key: string): any;
get id(): number;
erase(): void;
dump(): any;
}
export declare class Collection {
private _modelStore;
private _namespace;
constructor(namespace: string);
total(): number;
}
Try out
# clone and cd into directory
# install dependencies
npm install
# build project and load test server
# This should open localhost:4444 in your browser
npm run example
Basic example
Create your model
In this example I've created a model to represent a user. When instantiating the parent class (Model
), two parameters are required: a namespace ("User"
) and the structure of model. The Model
limits saves (more on that later) to the properties specified in the structure parameter.
class User extends Model {
constructor(id?: number) {
super(
"User",
[
"firstname",
"lastname",
"username",
"age",
],
id
)
}
get fullname() {
return `${this.firstname} ${this.lastname}`
}
}
Instantiation
Creating a new user would be done like this:
const user = new User()
Fetching an existing user
const user = new User(userID) // userID: number
Saving (to localstorage)
Setting properties would be done like this:
user.save([
firstname: 'Isaac',
lastname: 'Asimov',
username: 'asimov1969',
age: 33
])
The id of this new user instance can be accessed like this:
user.id // => some integer
To do:
[] expand ORM features [] undo save [x] instead of supplying an id, an id should be automatically determined [] joins