notes
|
@ -8,7 +8,7 @@
|
||||||
An example of converting between sub-units and base units in [[id:cda9c620-fec5-4549-b979-22fc06819d77][Python]] as defined
|
An example of converting between sub-units and base units in [[id:cda9c620-fec5-4549-b979-22fc06819d77][Python]] as defined
|
||||||
in [[id:bb3ab7e4-8824-4c32-bc74-e5b900d6e4d1][ISO 4217: Currency Codes]].
|
in [[id:bb3ab7e4-8824-4c32-bc74-e5b900d6e4d1][ISO 4217: Currency Codes]].
|
||||||
|
|
||||||
#+begin_src python :exports both
|
#+begin_src python :exports both :eval no-export
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
|
|
||||||
import pint
|
import pint
|
||||||
|
|
9
20231212145413-historical_data_tracking.org
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
:PROPERTIES:
|
||||||
|
:ID: 5954632d-32f9-4586-882d-1c062309e349
|
||||||
|
:ROAM_ALIASES: Historification
|
||||||
|
:END:
|
||||||
|
#+title: Historical data tracking
|
||||||
|
|
||||||
|
Maintaining a record of data stored in a database.
|
||||||
|
* Resources
|
||||||
|
- https://www.linkedin.com/pulse/historical-data-tracking-postgresql-part-1-jaime-mart%C3%ADnez-verd%C3%BA
|
8
20231212145613-versioning_database_records.org
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
:PROPERTIES:
|
||||||
|
:ID: 74354f68-f0b2-4928-b851-c3971eb23eeb
|
||||||
|
:END:
|
||||||
|
#+title: Versioning database records
|
||||||
|
|
||||||
|
A form of [[id:5954632d-32f9-4586-882d-1c062309e349][Historification]] in which previous versions of records are stored
|
||||||
|
alongside active versions, allowing previous versions to continue to be
|
||||||
|
referenced.
|
Before Width: | Height: | Size: 7.1 KiB After Width: | Height: | Size: 6.8 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 15 KiB |
|
@ -1,126 +1,126 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
<!-- Generated by graphviz version 7.1.0 (0)
|
<!-- Generated by graphviz version 9.0.0 (20230911.1827)
|
||||||
-->
|
-->
|
||||||
<!-- Pages: 1 -->
|
<!-- Pages: 1 -->
|
||||||
<svg width="1069pt" height="260pt"
|
<svg width="890pt" height="260pt"
|
||||||
viewBox="0.00 0.00 1068.53 260.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
viewBox="0.00 0.00 890.32 260.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 256)">
|
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 256)">
|
||||||
<polygon fill="white" stroke="none" points="-4,4 -4,-256 1064.53,-256 1064.53,4 -4,4"/>
|
<polygon fill="white" stroke="none" points="-4,4 -4,-256 886.32,-256 886.32,4 -4,4"/>
|
||||||
<!-- OpenAPIError -->
|
<!-- OpenAPIError -->
|
||||||
<g id="node1" class="node">
|
<g id="node1" class="node">
|
||||||
<title>OpenAPIError</title>
|
<title>OpenAPIError</title>
|
||||||
<ellipse fill="none" stroke="black" cx="220.19" cy="-234" rx="76.89" ry="18"/>
|
<ellipse fill="none" stroke="black" cx="183.75" cy="-234" rx="65.17" ry="18"/>
|
||||||
<text text-anchor="middle" x="220.19" y="-230.3" font-family="Times,serif" font-size="14.00">OpenAPIError</text>
|
<text text-anchor="middle" x="183.75" y="-228.95" font-family="Times,serif" font-size="14.00">OpenAPIError</text>
|
||||||
</g>
|
</g>
|
||||||
<!-- CastError -->
|
<!-- CastError -->
|
||||||
<g id="node2" class="node">
|
<g id="node2" class="node">
|
||||||
<title>CastError</title>
|
<title>CastError</title>
|
||||||
<ellipse fill="none" stroke="black" cx="57.19" cy="-162" rx="57.39" ry="18"/>
|
<ellipse fill="none" stroke="black" cx="46.75" cy="-162" rx="46.75" ry="18"/>
|
||||||
<text text-anchor="middle" x="57.19" y="-158.3" font-family="Times,serif" font-size="14.00">CastError</text>
|
<text text-anchor="middle" x="46.75" y="-156.95" font-family="Times,serif" font-size="14.00">CastError</text>
|
||||||
</g>
|
</g>
|
||||||
<!-- OpenAPIError->CastError -->
|
<!-- OpenAPIError->CastError -->
|
||||||
<g id="edge1" class="edge">
|
<g id="edge1" class="edge">
|
||||||
<title>OpenAPIError->CastError</title>
|
<title>OpenAPIError->CastError</title>
|
||||||
<path fill="none" stroke="black" d="M184.42,-217.64C159.71,-207.03 126.71,-192.85 100.51,-181.6"/>
|
<path fill="none" stroke="black" d="M153.68,-217.64C133.24,-207.19 106.04,-193.3 84.19,-182.13"/>
|
||||||
<polygon fill="black" stroke="black" points="102.07,-178.46 91.5,-177.73 99.31,-184.89 102.07,-178.46"/>
|
<polygon fill="black" stroke="black" points="85.8,-179.02 75.3,-177.59 82.61,-185.26 85.8,-179.02"/>
|
||||||
</g>
|
</g>
|
||||||
<!-- DeserializeError -->
|
<!-- DeserializeError -->
|
||||||
<g id="node3" class="node">
|
<g id="node3" class="node">
|
||||||
<title>DeserializeError</title>
|
<title>DeserializeError</title>
|
||||||
<ellipse fill="none" stroke="black" cx="220.19" cy="-162" rx="87.99" ry="18"/>
|
<ellipse fill="none" stroke="black" cx="183.75" cy="-162" rx="71.82" ry="18"/>
|
||||||
<text text-anchor="middle" x="220.19" y="-158.3" font-family="Times,serif" font-size="14.00">DeserializeError</text>
|
<text text-anchor="middle" x="183.75" y="-156.95" font-family="Times,serif" font-size="14.00">DeserializeError</text>
|
||||||
</g>
|
</g>
|
||||||
<!-- OpenAPIError->DeserializeError -->
|
<!-- OpenAPIError->DeserializeError -->
|
||||||
<g id="edge2" class="edge">
|
<g id="edge2" class="edge">
|
||||||
<title>OpenAPIError->DeserializeError</title>
|
<title>OpenAPIError->DeserializeError</title>
|
||||||
<path fill="none" stroke="black" d="M220.19,-215.7C220.19,-208.41 220.19,-199.73 220.19,-191.54"/>
|
<path fill="none" stroke="black" d="M183.75,-215.7C183.75,-208.41 183.75,-199.73 183.75,-191.54"/>
|
||||||
<polygon fill="black" stroke="black" points="223.7,-191.62 220.19,-181.62 216.7,-191.62 223.7,-191.62"/>
|
<polygon fill="black" stroke="black" points="187.25,-191.62 183.75,-181.62 180.25,-191.62 187.25,-191.62"/>
|
||||||
</g>
|
</g>
|
||||||
<!-- UnmarshalError -->
|
<!-- UnmarshalError -->
|
||||||
<g id="node5" class="node">
|
<g id="node5" class="node">
|
||||||
<title>UnmarshalError</title>
|
<title>UnmarshalError</title>
|
||||||
<ellipse fill="none" stroke="black" cx="420.19" cy="-162" rx="87.18" ry="18"/>
|
<ellipse fill="none" stroke="black" cx="350.75" cy="-162" rx="71.31" ry="18"/>
|
||||||
<text text-anchor="middle" x="420.19" y="-158.3" font-family="Times,serif" font-size="14.00">UnmarshalError</text>
|
<text text-anchor="middle" x="350.75" y="-156.95" font-family="Times,serif" font-size="14.00">UnmarshalError</text>
|
||||||
</g>
|
</g>
|
||||||
<!-- OpenAPIError->UnmarshalError -->
|
<!-- OpenAPIError->UnmarshalError -->
|
||||||
<g id="edge4" class="edge">
|
<g id="edge4" class="edge">
|
||||||
<title>OpenAPIError->UnmarshalError</title>
|
<title>OpenAPIError->UnmarshalError</title>
|
||||||
<path fill="none" stroke="black" d="M261.64,-218.5C291.96,-207.88 333.38,-193.39 366.28,-181.87"/>
|
<path fill="none" stroke="black" d="M218.35,-218.5C243.31,-208.03 277.28,-193.79 304.56,-182.36"/>
|
||||||
<polygon fill="black" stroke="black" points="367.37,-185.2 375.65,-178.59 365.06,-178.59 367.37,-185.2"/>
|
<polygon fill="black" stroke="black" points="305.77,-185.65 313.64,-178.55 303.06,-179.19 305.77,-185.65"/>
|
||||||
</g>
|
</g>
|
||||||
<!-- EmptyParameterValue -->
|
<!-- EmptyParameterValue -->
|
||||||
<g id="node4" class="node">
|
<g id="node4" class="node">
|
||||||
<title>EmptyParameterValue</title>
|
<title>EmptyParameterValue</title>
|
||||||
<ellipse fill="none" stroke="black" cx="213.19" cy="-90" rx="115.88" ry="18"/>
|
<ellipse fill="none" stroke="black" cx="177.75" cy="-90" rx="94.86" ry="18"/>
|
||||||
<text text-anchor="middle" x="213.19" y="-86.3" font-family="Times,serif" font-size="14.00">EmptyParameterValue</text>
|
<text text-anchor="middle" x="177.75" y="-84.95" font-family="Times,serif" font-size="14.00">EmptyParameterValue</text>
|
||||||
</g>
|
</g>
|
||||||
<!-- DeserializeError->EmptyParameterValue -->
|
<!-- DeserializeError->EmptyParameterValue -->
|
||||||
<g id="edge3" class="edge">
|
<g id="edge3" class="edge">
|
||||||
<title>DeserializeError->EmptyParameterValue</title>
|
<title>DeserializeError->EmptyParameterValue</title>
|
||||||
<path fill="none" stroke="black" d="M218.46,-143.7C217.74,-136.41 216.87,-127.73 216.05,-119.54"/>
|
<path fill="none" stroke="black" d="M182.26,-143.7C181.64,-136.41 180.89,-127.73 180.19,-119.54"/>
|
||||||
<polygon fill="black" stroke="black" points="219.53,-119.21 215.06,-109.61 212.57,-119.91 219.53,-119.21"/>
|
<polygon fill="black" stroke="black" points="183.68,-119.28 179.34,-109.61 176.71,-119.87 183.68,-119.28"/>
|
||||||
</g>
|
</g>
|
||||||
<!-- ValidateError -->
|
<!-- ValidateError -->
|
||||||
<g id="node6" class="node">
|
<g id="node6" class="node">
|
||||||
<title>ValidateError</title>
|
<title>ValidateError</title>
|
||||||
<ellipse fill="none" stroke="black" cx="420.19" cy="-90" rx="73.39" ry="18"/>
|
<ellipse fill="none" stroke="black" cx="350.75" cy="-90" rx="60.56" ry="18"/>
|
||||||
<text text-anchor="middle" x="420.19" y="-86.3" font-family="Times,serif" font-size="14.00">ValidateError</text>
|
<text text-anchor="middle" x="350.75" y="-84.95" font-family="Times,serif" font-size="14.00">ValidateError</text>
|
||||||
</g>
|
</g>
|
||||||
<!-- UnmarshalError->ValidateError -->
|
<!-- UnmarshalError->ValidateError -->
|
||||||
<g id="edge5" class="edge">
|
<g id="edge5" class="edge">
|
||||||
<title>UnmarshalError->ValidateError</title>
|
<title>UnmarshalError->ValidateError</title>
|
||||||
<path fill="none" stroke="black" d="M420.19,-143.7C420.19,-136.41 420.19,-127.73 420.19,-119.54"/>
|
<path fill="none" stroke="black" d="M350.75,-143.7C350.75,-136.41 350.75,-127.73 350.75,-119.54"/>
|
||||||
<polygon fill="black" stroke="black" points="423.7,-119.62 420.19,-109.62 416.7,-119.62 423.7,-119.62"/>
|
<polygon fill="black" stroke="black" points="354.25,-119.62 350.75,-109.62 347.25,-119.62 354.25,-119.62"/>
|
||||||
</g>
|
</g>
|
||||||
<!-- UnmarshallerError -->
|
<!-- UnmarshallerError -->
|
||||||
<g id="node7" class="node">
|
<g id="node7" class="node">
|
||||||
<title>UnmarshallerError</title>
|
<title>UnmarshallerError</title>
|
||||||
<ellipse fill="none" stroke="black" cx="646.19" cy="-90" rx="100.18" ry="18"/>
|
<ellipse fill="none" stroke="black" cx="540.75" cy="-90" rx="81.04" ry="18"/>
|
||||||
<text text-anchor="middle" x="646.19" y="-86.3" font-family="Times,serif" font-size="14.00">UnmarshallerError</text>
|
<text text-anchor="middle" x="540.75" y="-84.95" font-family="Times,serif" font-size="14.00">UnmarshallerError</text>
|
||||||
</g>
|
</g>
|
||||||
<!-- UnmarshalError->UnmarshallerError -->
|
<!-- UnmarshalError->UnmarshallerError -->
|
||||||
<g id="edge6" class="edge">
|
<g id="edge6" class="edge">
|
||||||
<title>UnmarshalError->UnmarshallerError</title>
|
<title>UnmarshalError->UnmarshallerError</title>
|
||||||
<path fill="none" stroke="black" d="M467.3,-146.41C502.03,-135.65 549.53,-120.94 586.86,-109.38"/>
|
<path fill="none" stroke="black" d="M389.65,-146.67C418.5,-136.04 458.09,-121.45 489.51,-109.88"/>
|
||||||
<polygon fill="black" stroke="black" points="587.63,-112.8 596.15,-106.5 585.56,-106.12 587.63,-112.8"/>
|
<polygon fill="black" stroke="black" points="490.66,-113.18 498.83,-106.44 488.24,-106.62 490.66,-113.18"/>
|
||||||
</g>
|
</g>
|
||||||
<!-- InvalidSchemaValue -->
|
<!-- InvalidSchemaValue -->
|
||||||
<g id="node8" class="node">
|
<g id="node8" class="node">
|
||||||
<title>InvalidSchemaValue</title>
|
<title>InvalidSchemaValue</title>
|
||||||
<ellipse fill="none" stroke="black" cx="386.19" cy="-18" rx="104.78" ry="18"/>
|
<ellipse fill="none" stroke="black" cx="319.75" cy="-18" rx="87.69" ry="18"/>
|
||||||
<text text-anchor="middle" x="386.19" y="-14.3" font-family="Times,serif" font-size="14.00">InvalidSchemaValue</text>
|
<text text-anchor="middle" x="319.75" y="-12.95" font-family="Times,serif" font-size="14.00">InvalidSchemaValue</text>
|
||||||
</g>
|
</g>
|
||||||
<!-- ValidateError->InvalidSchemaValue -->
|
<!-- ValidateError->InvalidSchemaValue -->
|
||||||
<g id="edge7" class="edge">
|
<g id="edge7" class="edge">
|
||||||
<title>ValidateError->InvalidSchemaValue</title>
|
<title>ValidateError->InvalidSchemaValue</title>
|
||||||
<path fill="none" stroke="black" d="M411.79,-71.7C408.08,-64.07 403.64,-54.92 399.5,-46.4"/>
|
<path fill="none" stroke="black" d="M343.08,-71.7C339.7,-64.07 335.65,-54.92 331.88,-46.4"/>
|
||||||
<polygon fill="black" stroke="black" points="402.68,-44.93 395.16,-37.47 396.38,-47.99 402.68,-44.93"/>
|
<polygon fill="black" stroke="black" points="335.18,-45.21 327.93,-37.49 328.78,-48.05 335.18,-45.21"/>
|
||||||
</g>
|
</g>
|
||||||
<!-- InvalidSchemaFormatValue -->
|
<!-- InvalidSchemaFormatValue -->
|
||||||
<g id="node9" class="node">
|
<g id="node9" class="node">
|
||||||
<title>InvalidSchemaFormatValue</title>
|
<title>InvalidSchemaFormatValue</title>
|
||||||
<ellipse fill="none" stroke="black" cx="646.19" cy="-18" rx="137.58" ry="18"/>
|
<ellipse fill="none" stroke="black" cx="540.75" cy="-18" rx="114.82" ry="18"/>
|
||||||
<text text-anchor="middle" x="646.19" y="-14.3" font-family="Times,serif" font-size="14.00">InvalidSchemaFormatValue</text>
|
<text text-anchor="middle" x="540.75" y="-12.95" font-family="Times,serif" font-size="14.00">InvalidSchemaFormatValue</text>
|
||||||
</g>
|
</g>
|
||||||
<!-- UnmarshallerError->InvalidSchemaFormatValue -->
|
<!-- UnmarshallerError->InvalidSchemaFormatValue -->
|
||||||
<g id="edge8" class="edge">
|
<g id="edge8" class="edge">
|
||||||
<title>UnmarshallerError->InvalidSchemaFormatValue</title>
|
<title>UnmarshallerError->InvalidSchemaFormatValue</title>
|
||||||
<path fill="none" stroke="black" d="M646.19,-71.7C646.19,-64.41 646.19,-55.73 646.19,-47.54"/>
|
<path fill="none" stroke="black" d="M540.75,-71.7C540.75,-64.41 540.75,-55.73 540.75,-47.54"/>
|
||||||
<polygon fill="black" stroke="black" points="649.7,-47.62 646.19,-37.62 642.7,-47.62 649.7,-47.62"/>
|
<polygon fill="black" stroke="black" points="544.25,-47.62 540.75,-37.62 537.25,-47.62 544.25,-47.62"/>
|
||||||
</g>
|
</g>
|
||||||
<!-- FormatterNotFoundError -->
|
<!-- FormatterNotFoundError -->
|
||||||
<g id="node10" class="node">
|
<g id="node10" class="node">
|
||||||
<title>FormatterNotFoundError</title>
|
<title>FormatterNotFoundError</title>
|
||||||
<ellipse fill="none" stroke="black" cx="931.19" cy="-18" rx="129.18" ry="18"/>
|
<ellipse fill="none" stroke="black" cx="777.75" cy="-18" rx="104.58" ry="18"/>
|
||||||
<text text-anchor="middle" x="931.19" y="-14.3" font-family="Times,serif" font-size="14.00">FormatterNotFoundError</text>
|
<text text-anchor="middle" x="777.75" y="-12.95" font-family="Times,serif" font-size="14.00">FormatterNotFoundError</text>
|
||||||
</g>
|
</g>
|
||||||
<!-- UnmarshallerError->FormatterNotFoundError -->
|
<!-- UnmarshallerError->FormatterNotFoundError -->
|
||||||
<g id="edge9" class="edge">
|
<g id="edge9" class="edge">
|
||||||
<title>UnmarshallerError->FormatterNotFoundError</title>
|
<title>UnmarshallerError->FormatterNotFoundError</title>
|
||||||
<path fill="none" stroke="black" d="M703.53,-74.92C748.09,-63.97 810.2,-48.72 858.29,-36.91"/>
|
<path fill="none" stroke="black" d="M588.14,-75C624.81,-64.17 675.9,-49.08 715.81,-37.29"/>
|
||||||
<polygon fill="black" stroke="black" points="858.92,-40.36 867.79,-34.57 857.25,-33.56 858.92,-40.36"/>
|
<polygon fill="black" stroke="black" points="716.69,-40.68 725.29,-34.49 714.71,-33.97 716.69,-40.68"/>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.4 KiB |
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 6.8 KiB |