Ferreteria/v0.5/sql/node: Difference between revisions

From Woozle Writes Code
< Ferreteria‎ | v0.5‎ | sql
Jump to navigation Jump to search
(Created page with "==About== * '''table purpose''': root for all data * '''record purpose''': a thing that has values * '''Module''': {{l/version|node}} ==Concept== Every '''node''' * is a recor...")
 
Line 21: Line 21:
** "integer width is deprecated"; also decided it should be 8 bytes
** "integer width is deprecated"; also decided it should be 8 bytes
** added ID_Mom because it seems necessary to be able to support sub-nodes
** added ID_Mom because it seems necessary to be able to support sub-nodes
* '''2022-03-06''' copying {{l/ferreteria|v0.42/sql/node|v0.42}} for v0.5
* '''2022-03-06''' copying {{l/ferreteria|v0.42/sql/node|v0.42}} verbatim for v0.5
 
==Fields==
==Fields==
* '''Type''': name of node type; code should know how to map these to node-handler classes
* '''Type''': name of node type; code should know how to map these to node-handler classes

Revision as of 17:16, 6 March 2022

About

  • table purpose: root for all data
  • record purpose: a thing that has values
  • Module: Template:L/version

Concept

Every node

  • is a record in the node table
  • can have zero or more leafs
    • There's generally no point to having zero, but no reason to forbid it.
  • can have a (node) type which points to a handler-class
    • so that when we're looking at a group of unspecified nodes, we know how to handle each one

History

  • 2017-03-12 started
  • 2017-04-09 decided there really should be a WhenMade timestamp; can always remove later
  • 2017-08-05 renamed Class to Type for consistency with tf_leaf: records use "types", code maps these to "classes"
  • 2020-01-16 redesigning for v0.4 (copied from Ferreteria/sql/tf node)
  • 2020-01-23 copying from v0.41 to v0.42 essentially unaltered
  • 2020-05-26 decided to remove NOT NULL from Type user can create new Nodes without any input.
    • Strongly inclined to make Type a pseudofield (Leaf), in any case.
  • 2021-01-19
    • "integer width is deprecated"; also decided it should be 8 bytes
    • added ID_Mom because it seems necessary to be able to support sub-nodes
  • 2022-03-06 copying v0.42/sql/node verbatim for v0.5

Fields

  • Type: name of node type; code should know how to map these to node-handler classes

SQL

CREATE TABLE `node` (
  `ID`       BIGINT           NOT NULL AUTO_INCREMENT,
  `ID_Mom`   BIGINT       DEFAULT NULL COMMENT "ID of parent node, if any",
  `Type`     VARCHAR(255) DEFAULT NULL COMMENT "name of node type",
  `WhenMade` DATETIME         NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY(`ID`)
) ENGINE=InnoDB;