use proper data type for app columns, include master table for app columns
This commit is contained in:
		
							parent
							
								
									b47630cf61
								
							
						
					
					
						commit
						a657106bf5
					
				| @ -48,7 +48,8 @@ BEGIN | |||||||
|         INSERT INTO  |         INSERT INTO  | ||||||
|             fc.target_meta |             fc.target_meta | ||||||
|         SELECT  |         SELECT  | ||||||
|             table_schema, table_name, column_name, ordinal_position, null::text, null::text, null::text, data_type, 'units', null::text |             --schema        tname        cname        opos            func         fkey        fcol        dtype         appcol    pretty | ||||||
|  |             table_schema, table_name, column_name, ordinal_position, null::text, null::text, null::text, 'numeric' , 'units', null::text | ||||||
|         FROM  |         FROM  | ||||||
|             information_schema.columns |             information_schema.columns | ||||||
|         WHERE |         WHERE | ||||||
| @ -63,7 +64,7 @@ BEGIN | |||||||
|         INSERT INTO  |         INSERT INTO  | ||||||
|             fc.target_meta |             fc.target_meta | ||||||
|         SELECT  |         SELECT  | ||||||
|             table_schema, table_name, column_name, ordinal_position, null::text, null::text, null::text, data_type, 'version', null::text |             table_schema, table_name, column_name, ordinal_position, null::text, null::text, null::text, 'text', 'version', null::text | ||||||
|         FROM  |         FROM  | ||||||
|             information_schema.columns |             information_schema.columns | ||||||
|         WHERE |         WHERE | ||||||
| @ -78,7 +79,7 @@ BEGIN | |||||||
|         INSERT INTO  |         INSERT INTO  | ||||||
|             fc.target_meta |             fc.target_meta | ||||||
|         SELECT  |         SELECT  | ||||||
|             table_schema, table_name, column_name, ordinal_position, null::text, null::text, null::text, data_type, 'iter', null::text |             table_schema, table_name, column_name, ordinal_position, null::text, null::text, null::text,  'text' , 'iter', null::text | ||||||
|         FROM  |         FROM  | ||||||
|             information_schema.columns |             information_schema.columns | ||||||
|         WHERE |         WHERE | ||||||
| @ -93,7 +94,7 @@ BEGIN | |||||||
|         INSERT INTO  |         INSERT INTO  | ||||||
|             fc.target_meta |             fc.target_meta | ||||||
|         SELECT  |         SELECT  | ||||||
|             table_schema, table_name, column_name, ordinal_position, null::text, null::text, null::text, data_type, 'logid', null::text |             table_schema, table_name, column_name, ordinal_position, null::text, null::text, null::text, 'bigint' , 'logid', null::text | ||||||
|         FROM  |         FROM  | ||||||
|             information_schema.columns |             information_schema.columns | ||||||
|         WHERE |         WHERE | ||||||
|  | |||||||
| @ -29,6 +29,38 @@ COMMENT ON COLUMN fc.target_meta.dtype IS 'data type of the sales table column'; | |||||||
| COMMENT ON COLUMN fc.target_meta.appcol IS 'supply column name to be used for application variables - (specifcy the order date column)'; | COMMENT ON COLUMN fc.target_meta.appcol IS 'supply column name to be used for application variables - (specifcy the order date column)'; | ||||||
| COMMENT ON COLUMN fc.target_meta.pretty IS 'the presentation name of the column'; | COMMENT ON COLUMN fc.target_meta.pretty IS 'the presentation name of the column'; | ||||||
| 
 | 
 | ||||||
|  | CREATE TABLE IF NOT EXISTS fc.appcols ( | ||||||
|  |     col text, | ||||||
|  |     dtype text, | ||||||
|  |     required boolean, | ||||||
|  |     dflt text | ||||||
|  | ); | ||||||
|  | ALTER TABLE fc.appcols DROP CONSTRAINT IF EXISTS appcols_pkey CASCADE; | ||||||
|  | ALTER TABLE fc.appcols ADD CONSTRAINT appcols_pkey PRIMARY KEY (col, dtype); | ||||||
|  | COMMENT ON TABLE fc.appcols IS 'hard-coded columns names searched for by the application'; | ||||||
|  | INSERT INTO  | ||||||
|  |     fc.appcols (col, dtype, required, dflt)  | ||||||
|  | VALUES  | ||||||
|  |     ('value'        ,'numeric',true,    null), | ||||||
|  |     ('cost'         ,'numeric',true,   '0'), | ||||||
|  |     ('units'        ,'numeric',true,   '0'), | ||||||
|  |     ('order_date'   ,'date'   ,true,    null), | ||||||
|  |     ('ship_date'    ,'date'   ,false,   null), | ||||||
|  |     ('order_status' ,'text'   ,true,   'CLOSED'), | ||||||
|  |     ('version'      ,'text'   ,true,   'ACTUALS'), | ||||||
|  |     ('iter'         ,'text'   ,true,   'ACTUALS'), | ||||||
|  |     ('logid'        ,'bigint' ,true,   null), | ||||||
|  |     ('tag'          ,'text'   ,true,   null), | ||||||
|  |     ('comment'      ,'text'   ,true,   null), | ||||||
|  |     ('customer'     ,'text'   ,false,   null), | ||||||
|  |     ('item'         ,'text'   ,false,   null) | ||||||
|  | ON CONFLICT ON CONSTRAINT appcols_pkey DO UPDATE SET | ||||||
|  |     dtype = EXCLUDED.dtype | ||||||
|  |     ,required = EXCLUDED.required | ||||||
|  |     ,dflt = EXCLUDED.dflt; | ||||||
|  | 
 | ||||||
|  | ALTER TABLE fc.target_meta ADD CONSTRAINT fk_appcol FOREIGN KEY (appcol,dtype) REFERENCES fc.appcols(col, dtype); | ||||||
|  | 
 | ||||||
| CREATE TABLE IF NOT EXISTS fc.log  ( | CREATE TABLE IF NOT EXISTS fc.log  ( | ||||||
|     id int GENERATED ALWAYS AS IDENTITY |     id int GENERATED ALWAYS AS IDENTITY | ||||||
|     ,doc jsonb |     ,doc jsonb | ||||||
|  | |||||||
| @ -9,7 +9,7 @@ SELECT | |||||||
|     ,ordinal_position |     ,ordinal_position | ||||||
|     ,null::text func |     ,null::text func | ||||||
|     ,null::text fkey        --foreign key to a master table |     ,null::text fkey        --foreign key to a master table | ||||||
|     ,column_name fcol |     ,null::text fcol | ||||||
|     ,data_type::text dtype |     ,data_type::text dtype | ||||||
|     ,null::text appcol |     ,null::text appcol | ||||||
|     ,null::text pretty |     ,null::text pretty | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user