Comparing Firefly Semantics Slice Entities | Task

Ole Ersoy
May - 12  -  2 min

Scenario

We wish to compare Todo instances that have been added to a todoStore:EStore<Todo> for equality.

Demo

First we will create the Todo model and a few Todo instances.

export class Todo {
constructor(
public complete: boolean,
public title: string,
public gid?: string,
public id?: number
) {}
}

const todo1 = new Todo(false, 'Finish it!');
const todo2 = new Todo(false, 'Just do it!');
const todos = [todo1, todo2];

Then we will initialize our Todo entity store.

const todoStore: EStore<Todo> = new EStore<Todo>(todos);

Note that when each Todo instance as added to the store a unique global id was assigned to it.

//========================================
// Check Global ID Assignment
//========================================
console.log(todo1);

Next we will compare entities using their global IDs (gid).

let todo1EqualsTodo1 = todoStore.equalsByGUID(todo1, todo1);
//console.log(`Todo 1 Equals Todo1 ${todo1EqualsTodo1}`);
let todo1EqualsTodo2 = todoStore.equalsByGUID(todo1, todo2);
//console.log(`Todo 1 Equals Todo2 ${todo1EqualsTodo2}`);

We can also compare entities by their id property using equalsByID.

todo1.id = 1;
todo2.id = 2;
todo1EqualsTodo1 = todoStore.equalsByID(todo1, todo1);
//console.log(`Todo 1 Equals Todo1 ${todo1EqualsTodo1}`);
todo1EqualsTodo1 = todoStore.equalsByID(todo1, todo2);
console.log(`Todo 1 Equals Todo2 ${todo1EqualsTodo2}`);