A library to query business logics via truth table.
Business logics could be hardest parts to manage in a software when they are too complicated. Writing so many if-else block doesn't help usually too. But there is many simple solution to detech business logics and application behavior which is Truth Table.
You might see a simple truth table in following lines;
is_logged_in | is_admin | read_permission | write_permission |
---|---|---|---|
true | false | true | false |
true | true | true | true |
With this library, business-logics, you might define your business logics as truth tables and query them whenever you need.
You don't have to write if-else blocks anymore.
$ yarn add business-logics
It is easy to use;
import BusinessLogics from 'business-logics'
const logics = new BusinessLogics({
parameters: ['is_logged_in', 'is_admin'],
results: {
read: { default: false },
write: { default: false }
},
data: [
// is_logged is_admin read write
//--------------------------------------
[ true, false, true, false ],
[ true, true, true, true ]
]
})
const status = logics.get({
is_logged_in: true,
is_admin: false
})
console.log(status)
These are following result of a query;
{
"is_logged_in": true,
"is_admin": false,
"read": true,
"write": false
}
If there is not any truth table definition for your query, you'll get your default values. So that you don't have to write all possible values for parameters.
You might review simple usage for a VueJS application in following code;
import BusinessLogics from 'business-logics'
export default {
data () {
return {
map: {
parameters: ['is_logged_in', 'is_admin'],
results: {
read: { default: false },
write: { default: false }
},
data: [
// is_logged is_admin read write
//--------------------------------------
[ true, false, true, false ],
[ true, true, true, true ]
]
},
isLoggedIn: true,
isAdmin: false,
logics: null
}
},
mounted () {
this.logics = new BusinessLogics(this.map)
},
computed: {
status () {
if (!this.logics) {
return {}
}
return this.logics.get({
is_logged_in: this.isLoggedIn,
is_admin: this.isAdmin
})
}
}
}
In this example, you can calculate the statuses of business logic with your truth table.