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;
}
# 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
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}`
}
}
Creating a new user would be done like this:
const user = new User()
Fetching an existing user
const user = new User(userID) // userID: number
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
[] expand ORM features [] undo save [x] instead of supplying an id, an id should be automatically determined [] joins