initial
This commit is contained in:
commit
a4b0a1f793
62
db_deploy.sql
Normal file
62
db_deploy.sql
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
BEGIN TRANSACTION;
|
||||||
|
--\conninfo
|
||||||
|
--drop schema evt cascade
|
||||||
|
--------------------------build schema----------------------------------------------
|
||||||
|
|
||||||
|
CREATE SCHEMA evt;
|
||||||
|
COMMENT ON SCHEMA evt IS 'event log';
|
||||||
|
|
||||||
|
--------------------------event log table-------------------------------------------
|
||||||
|
|
||||||
|
CREATE TABLE evt.bpr (
|
||||||
|
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY
|
||||||
|
,bpr JSONB
|
||||||
|
,bprh JSONB
|
||||||
|
,stmp timestamptz
|
||||||
|
);
|
||||||
|
COMMENT ON COLUMN evt.bpr.bpr IS 'basic pecuniary record';
|
||||||
|
COMMENT ON COLUMN evt.bpr.bprh IS 'basic pecuniary record history';
|
||||||
|
COMMENT ON COLUMN evt.bpr.stmp IS 'insert time';
|
||||||
|
|
||||||
|
--------------------------account master---------------------------------------------
|
||||||
|
|
||||||
|
--the account master should be dynamically created
|
||||||
|
CREATE TABLE evt.acct (
|
||||||
|
acct text PRIMARY KEY
|
||||||
|
,prop jsonb
|
||||||
|
);
|
||||||
|
COMMENT ON COLUMN evt.acct.acct IS 'account';
|
||||||
|
COMMENT ON COLUMN evt.acct.prop IS 'properties';
|
||||||
|
|
||||||
|
--------------------------relational ledger------------------------------------------
|
||||||
|
|
||||||
|
CREATE TABLE evt.gl (
|
||||||
|
id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY
|
||||||
|
,bpr_id INT REFERENCES evt.bpr (id)
|
||||||
|
,acct text REFERENCES evt.acct (acct)
|
||||||
|
,amount numeric (12,2)
|
||||||
|
,bpr jsonb
|
||||||
|
);
|
||||||
|
COMMENT ON COLUMN evt.gl.bpr_id IS 'id of initial basic pecuniary record';
|
||||||
|
COMMENT ON COLUMN evt.gl.acct IS 'account code';
|
||||||
|
COMMENT ON COLUMN evt.gl.amount IS 'amount';
|
||||||
|
COMMENT ON COLUMN evt.gl.bpr IS 'extract from initial basic pecuniary record';
|
||||||
|
|
||||||
|
--------------------------balances----------------------------------------------------
|
||||||
|
|
||||||
|
CREATE TABLE evt.bal (
|
||||||
|
acct TEXT REFERENCES evt.acct(acct)
|
||||||
|
,perd daterange
|
||||||
|
,obal numeric(12,2)
|
||||||
|
,debits numeric(12,2)
|
||||||
|
,credits numeric(12,2)
|
||||||
|
,cbal numeric(12,2)
|
||||||
|
);
|
||||||
|
COMMENT ON COLUMN evt.bal.acct IS 'account';
|
||||||
|
COMMENT ON COLUMN evt.bal.perd IS 'period';
|
||||||
|
COMMENT ON COLUMN evt.bal.obal IS 'opening balance';
|
||||||
|
COMMENT ON COLUMN evt.bal.debits IS 'total debits';
|
||||||
|
COMMENT ON COLUMN evt.bal.credits IS 'total credits';
|
||||||
|
COMMENT ON COLUMN evt.bal.cbal IS 'closing balance';
|
||||||
|
|
||||||
|
COMMIT;
|
39
schema/documents/bpr.json
Normal file
39
schema/documents/bpr.json
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
{
|
||||||
|
"gl": [
|
||||||
|
{
|
||||||
|
"jpath": [
|
||||||
|
"{item,0}",
|
||||||
|
"{header}"
|
||||||
|
],
|
||||||
|
"amount": 2.19,
|
||||||
|
"account": "h.food"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"jpath": [
|
||||||
|
"{item,0}",
|
||||||
|
"{header}"
|
||||||
|
],
|
||||||
|
"amount": -2.19,
|
||||||
|
"account": "h.dcard"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"item": [
|
||||||
|
{
|
||||||
|
"item": "green olives",
|
||||||
|
"amount": 2.19,
|
||||||
|
"reason": "food",
|
||||||
|
"account": "h.food"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"header": {
|
||||||
|
"entity": "home",
|
||||||
|
"module": "MHI",
|
||||||
|
"offset": "h.dcard",
|
||||||
|
"vendor": "Discount Drug Mart",
|
||||||
|
"currency": "USD",
|
||||||
|
"eff_date": "1/6/2018",
|
||||||
|
"location": "Stow, OH",
|
||||||
|
"instrument": "Discover Card",
|
||||||
|
"transaction": "purchase"
|
||||||
|
}
|
||||||
|
}
|
9
schema/tables/acct.sql
Normal file
9
schema/tables/acct.sql
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
--------------------------account master---------------------------------------------
|
||||||
|
|
||||||
|
--the account master should be dynamically created
|
||||||
|
CREATE TABLE evt.acct (
|
||||||
|
acct text PRIMARY KEY
|
||||||
|
,prop jsonb
|
||||||
|
);
|
||||||
|
COMMENT ON COLUMN evt.acct.acct IS 'account';
|
||||||
|
COMMENT ON COLUMN evt.acct.prop IS 'properties';
|
16
schema/tables/bal.sql
Normal file
16
schema/tables/bal.sql
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
--------------------------balances----------------------------------------------------
|
||||||
|
|
||||||
|
CREATE TABLE evt.bal (
|
||||||
|
acct TEXT REFERENCES evt.acct(acct)
|
||||||
|
,perd daterange
|
||||||
|
,obal numeric(12,2)
|
||||||
|
,debits numeric(12,2)
|
||||||
|
,credits numeric(12,2)
|
||||||
|
,cbal numeric(12,2)
|
||||||
|
);
|
||||||
|
COMMENT ON COLUMN evt.bal.acct IS 'account';
|
||||||
|
COMMENT ON COLUMN evt.bal.perd IS 'period';
|
||||||
|
COMMENT ON COLUMN evt.bal.obal IS 'opening balance';
|
||||||
|
COMMENT ON COLUMN evt.bal.debits IS 'total debits';
|
||||||
|
COMMENT ON COLUMN evt.bal.credits IS 'total credits';
|
||||||
|
COMMENT ON COLUMN evt.bal.cbal IS 'closing balance';
|
11
schema/tables/bpr.sql
Normal file
11
schema/tables/bpr.sql
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
--------------------------event log table-------------------------------------------
|
||||||
|
|
||||||
|
CREATE TABLE evt.bpr (
|
||||||
|
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY
|
||||||
|
,bpr JSONB
|
||||||
|
,bprh JSONB
|
||||||
|
,stmp timestamptz
|
||||||
|
);
|
||||||
|
COMMENT ON COLUMN evt.bpr.bpr IS 'basic pecuniary record';
|
||||||
|
COMMENT ON COLUMN evt.bpr.bprh IS 'basic pecuniary record history';
|
||||||
|
COMMENT ON COLUMN evt.bpr.stmp IS 'insert time';
|
13
schema/tables/gl.sql
Normal file
13
schema/tables/gl.sql
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
--------------------------relational ledger------------------------------------------
|
||||||
|
|
||||||
|
CREATE TABLE evt.gl (
|
||||||
|
id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY
|
||||||
|
,bpr_id INT REFERENCES evt.bpr (id)
|
||||||
|
,acct text REFERENCES evt.acct (acct)
|
||||||
|
,amount numeric (12,2)
|
||||||
|
,bpr jsonb
|
||||||
|
);
|
||||||
|
COMMENT ON COLUMN evt.gl.bpr_id IS 'id of initial basic pecuniary record';
|
||||||
|
COMMENT ON COLUMN evt.gl.acct IS 'account code';
|
||||||
|
COMMENT ON COLUMN evt.gl.amount IS 'amount';
|
||||||
|
COMMENT ON COLUMN evt.gl.bpr IS 'extract from initial basic pecuniary record';
|
16
schema/triggers/log_insert.sql
Normal file
16
schema/triggers/log_insert.sql
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
--------------------------balances----------------------------------------------------
|
||||||
|
|
||||||
|
CREATE TABLE evt.bal (
|
||||||
|
acct TEXT REFERENCES evt.acct(acct)
|
||||||
|
,perd daterange
|
||||||
|
,obal numeric(12,2)
|
||||||
|
,debits numeric(12,2)
|
||||||
|
,credits numeric(12,2)
|
||||||
|
,cbal numeric(12,2)
|
||||||
|
);
|
||||||
|
COMMENT ON COLUMN evt.bal.acct IS 'account';
|
||||||
|
COMMENT ON COLUMN evt.bal.perd IS 'period';
|
||||||
|
COMMENT ON COLUMN evt.bal.obal IS 'opening balance';
|
||||||
|
COMMENT ON COLUMN evt.bal.debits IS 'total debits';
|
||||||
|
COMMENT ON COLUMN evt.bal.credits IS 'total credits';
|
||||||
|
COMMENT ON COLUMN evt.bal.cbal IS 'closing balance';
|
Loading…
Reference in New Issue
Block a user