Ferret File System/v0.1/SQL/folder: Difference between revisions

From Woozle Writes Code
Jump to navigation Jump to search
(extracted from main FF page)
 
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
==About==
==About==
===fields===
===fields===
* '''Name''' is not the full path, just the folder's filename. If it is the root folder of a volume (ID_Parent IS NULL), then Name should ''not'' be included as part of the path; drive letters and such are set in Mappings. Name must always be non-null, so this value is filled with something meaningless like "." if it is a root folder. (Maybe we'll put the volume name in there later.)
* '''noScan''' is for blacklisting folders whose contents we really don't want to track, such as temp and trash areas which may become full of frequently-changing but useless clutter, or areas where things that aren't really files are kept (e.g. "/dev"), areas where drives are mounted ("/media", "/mnt"), etc.
* '''noScan''' is for blacklisting folders whose contents we really don't want to track, such as temp and trash areas which may become full of frequently-changing but useless clutter, or areas where things that aren't really files are kept (e.g. "/dev")
===history===
* '''FirstFound''' and '''LastFound''' may need to be NULL for root folders. It's not clear why this happens (perhaps they were manually created -- but the code should have time-stamped them -- but possibly this was just an oversight, and wouldn't happen with production code).
* '''2013-06-30''' Added '''ID_Volume''' field as part of general schema redesign.
* '''2016-02-27'''
** Removed '''isRecur''' and '''Descr''', added '''ID_Link'''.
** Moved many fields to {{l/same|entry}} and replaced them with '''ID_Entry'''.
** Renamed from "folders" to "folder".
==SQL==
==SQL==
<mysql>CREATE TABLE `folders` (
<mysql>CREATE TABLE `folder` (
   `ID`         INT NOT NULL AUTO_INCREMENT,
   `ID_Entry`   INT NOT NULL,
  `ID_Parent`  INT DEFAULT NULL      COMMENT "parent folder; NULL = filesystem root",
  `Name`        VARCHAR(255) NOT NULL COMMENT "filesystem's name for the folder",
  `Descr`      VARCHAR(255) DEFAULT NULL COMMENT "description for human consumption (optional; mainly for local roots)",
  `WhenCreated` DATETIME DEFAULT NULL COMMENT "folder's creation timestamp, where available",
  `WhenChanged` DATETIME DEFAULT NULL COMMENT "folder's modification timestamp, where available",
  `FirstFound`  DATETIME DEFAULT NULL COMMENT "time/date when folder was first found during a scan",
  `LastFound`  DATETIME DEFAULT NULL COMMENT "time/date when folder was most recently found during a scan",
  `isFound`    BOOL DEFAULT FALSE    COMMENT "TRUE = was found on most recent scan",
   `noScan`      BOOL DEFAULT FALSE    COMMENT "TRUE = for whatever reason, don't bother scanning inside this folder",
   `noScan`      BOOL DEFAULT FALSE    COMMENT "TRUE = for whatever reason, don't bother scanning inside this folder",
  `wasDenied`  BOOL DEFAULT FALSE    COMMENT "TRUE = filesystem did not allow access on last scan attempt",
   PRIMARY KEY(`ID_Entry`)
  `isRecur`    BOOL DEFAULT FALSE    COMMENT "TRUE = this folder is a repeat of a parent folder, probably due to a recursive link",
   PRIMARY KEY(`ID`)
)
)
ENGINE = MYISAM;</mysql>
ENGINE = INNODB;</mysql>

Latest revision as of 13:40, 25 February 2024

About

fields

  • noScan is for blacklisting folders whose contents we really don't want to track, such as temp and trash areas which may become full of frequently-changing but useless clutter, or areas where things that aren't really files are kept (e.g. "/dev"), areas where drives are mounted ("/media", "/mnt"), etc.

history

  • 2013-06-30 Added ID_Volume field as part of general schema redesign.
  • 2016-02-27
    • Removed isRecur and Descr, added ID_Link.
    • Moved many fields to entry and replaced them with ID_Entry.
    • Renamed from "folders" to "folder".

SQL

<mysql>CREATE TABLE `folder` (

 `ID_Entry`    INT NOT NULL,
 `noScan`      BOOL DEFAULT FALSE    COMMENT "TRUE = for whatever reason, don't bother scanning inside this folder",
 PRIMARY KEY(`ID_Entry`)

) ENGINE = INNODB;</mysql>