Ferreteria/modules/files/rf node: Difference between revisions

From Woozle Writes Code
Jump to navigation Jump to search
(internal/external filespecs tracked separately)
No edit summary
Line 16: Line 16:
** '''OFSpecFull''': full path to this node (including name) from external URI base
** '''OFSpecFull''': full path to this node (including name) from external URI base
** '''ID_OFParent''': parent node as seen by user
** '''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==
==History==
* '''2017-07-22''' created for reworking file-management
* '''2017-07-22''' created for reworking file-management
Line 22: Line 23:
==SQL==
==SQL==
<mysql> CREATE TABLE `rf_node` (
<mysql> CREATE TABLE `rf_node` (
   ID       INT          NOT NULL AUTO_INCREMENT,
   ID         INT          NOT NULL AUTO_INCREMENT,
   IFSpecPart VARCHAR(255) NOT NULL COMMENT "relative filespec - the part of the path from parent to this file/folder",
   IFSpecPart VARCHAR(255) NOT NULL,
   IFSpecFull TEXT        NOT NULL,
   IFSpecFull TEXT        NOT NULL,
   ID_IFParent INT       DEFAULT NULL,
   ID_IFParent INT         DEFAULT NULL,
   OFSpecPart VARCHAR(255) NOT NULL,
   OFSpecPart VARCHAR(255) NOT NULL,
   OFSpecFull TEXT        NOT NULL,
   OFSpecFull TEXT        NOT NULL,
   ID_OFParent INT       DEFAULT NULL,
   ID_OFParent INT         DEFAULT NULL,
   WhenAdded DATETIME   NOT NULL COMMENT "when the file was first added to the repository",
   WhenAdded   DATETIME     NOT NULL COMMENT "when the file was first added to the repository",
   WhenCreated DATETIME   NOT NULL COMMENT "file's creation timestamp",
   WhenCreated DATETIME     NOT NULL COMMENT "file's creation timestamp",
   WhenEdited  DATETIME   DEFAULT NULL COMMENT "file's last-modified 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)",
   WhenDeleted DATETIME     DEFAULT NULL COMMENT "when the file was removed from the repository (NULL = still here)",
   Descr     VARCHAR(255) DEFAULT NULL COMMENT "brief name or description",
   Descr       TEXT        DEFAULT NULL COMMENT "brief name or description",
   PRIMARY KEY(`ID`)
   PRIMARY KEY(`ID`)
) ENGINE = InnoDB;</mysql>
) ENGINE = InnoDB;</mysql>

Revision as of 19:44, 25 July 2017

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>