0.1.8 • Published 4 years ago

@kevinldonnelly/crud v0.1.8

Weekly downloads
-
License
ISC
Repository
-
Last release
4 years ago

CRUD ToDo example in Typescript

MVC with CRUD controller dependency injection

Based on

https://github.com/shprink/web-components-todo/tree/master/native-shadow-dom

modified to Typescript and CRUD controller added for saving to database

https://en.wikipedia.org/wiki/Create,_read,_update_and_delete

firebase signin

firebase-signin.ts
<signin-firebase></signin-firebase>

ToDo CRUD Template Data Model and Controller

crud.types.ts

interface ICrud<T, K> {
    data: T[];
    Create(value: T, callback: (key: K) => void);
    Read(key: K, callback: (data: T) => void);
    ReadAll(callback: (data: T[]) => void);
    Update(key: K, value: T, callback: () => void);
    Delete(key: K, callback: () => void);
    Keys?(collection: string, callback: (keys: string[]) => void);
}


interface IToDoItem {
    text: string;
    checked: boolean;
    key?: string;
    order?: number;
}

Firebase implementation

crud.firebase.ts

element = document.querySelector('signin-firebase');
element.config = firebaseConfig;

export namespace Firebase {

    export class TodoCrud implements ICrud<IToDoItem, string> {

crud dependency injection

main.ts

todo = document.querySelector('my-todo');

let crud = new Firebase.TodoCrud('0', () => {
      todo.crud = crud; // todo list rendered from list array
   }); 

my-todo.ts

 _crud: ICrud<IToDoItem, string>;

 set crud(value: ICrud<IToDoItem, number>) {

        this._crud = value;
        this._render();
    }