Ferreteria/modules/files/rf node

From Woozle Writes Code
< Ferreteria‎ | modules‎ | files
Revision as of 19:44, 25 July 2017 by htyp>Woozle
Jump to navigation Jump to search

About

  • Meaning: can represent any filesystem entity
  • Purpose: for code-managed repositories
  • Notes:
    • directory size optimization - For now, we'll just set use a constant and set it to a best-guess limit, probably 1000.
    • maximum URL length is somewhere around 1024 characters (varies by browser and server; presumably there is an official limit that is ≤ this).
    • This is related to FileFerret/SQL/entry, but not the same; that system tracks user-managed files.
    • Wrinkle I'm still working out: this actually needs to track two different representations of the file -- one for how to retrieve it from the native filesystem, and the other by which it will be represented to the user. There are issues to consider.

Fields

  • IFSpec*: These are related to where the file is actually stored in the filesystem. They are not exposed to non-admin users unless direct access is desired (no security). It should be optimized for access time or whatever metrics are prioritized:
    • IFSpecName: this node's name as known to the filesystem
    • IFSpecFull: full filespec to this node (including name) from repository base spec
    • ID_IFParent
  • OFSpec*: These are related to the hierarchy that is exposed to the user:
    • OFSpecName: name by which the user knows the node (how it's displayed)
    • OFSpecFull: full path to this node (including name) from external URI base
    • ID_OFParent: parent node as seen by user
  • Descr: This is kind of a quick-n-dirty field for descriptive notes; eventually there should be a field-tagging system.

History

  • 2017-07-22 created for reworking file-management
  • 2017-07-24 moved from VbzCart to Ferreteria (RepoFerret module); renamed from fm_node to rf_node
  • 2017-07-25 decided to try having separate internal and external filespec; rearranged stuff

SQL

<mysql> CREATE TABLE `rf_node` (

 ID          INT          NOT NULL AUTO_INCREMENT,
 IFSpecPart  VARCHAR(255) NOT NULL,
 IFSpecFull  TEXT         NOT NULL,
 ID_IFParent INT          DEFAULT NULL,
 OFSpecPart  VARCHAR(255) NOT NULL,
 OFSpecFull  TEXT         NOT NULL,
 ID_OFParent INT          DEFAULT NULL,
 WhenAdded   DATETIME     NOT NULL COMMENT "when the file was first added to the repository",
 WhenCreated DATETIME     NOT NULL COMMENT "file's creation timestamp",
 WhenEdited  DATETIME     DEFAULT NULL COMMENT "file's last-modified timestamp",
 WhenDeleted DATETIME     DEFAULT NULL COMMENT "when the file was removed from the repository (NULL = still here)",
 Descr       TEXT         DEFAULT NULL COMMENT "brief name or description",
 PRIMARY KEY(`ID`)

) ENGINE = InnoDB;</mysql>