OGoDatabaseProject ================== This bundle implements the document storage backend for 'database' based projects. Such projects store document metadata in the database and the actual file BLOB in the filesystem. The functionality is based on the LSDocuments and LSProject Logic bundles. Note that this bundle was previously one with OGoProjects and got moved out when additional backend got available. Due to this the source is a bit messy. Further the design of the SkyProjectFileManager needs a LOT of work, its a huge class doing all kinds of things at the same time. This needs to get refactored into several small units doing specific things. Database Storage ================ Tables: document / document_version / document_editing - folders are regular document's - links are document's - documents know their parents, not the reverse - filenames are stored in the 'title' column - extensions are stored separate, in the 'filetype' column Standard File Attribute Keys ============================ A few standard attributes are set in documents, some have multiple names. Not all of them might be set in all documents. Note: the 'title' is the filename in the database, the 'abstract' is the title or subject. - check for hasPrefix: This is from SkyProjectFileManager+FileAttributes.m: attribute document/database - NSFileSubject / title abstract - filename formatted 'title' - fileType fileType - fileSize fileSize - status [released] status - globalID documentId | documentVersionId - versionCount versionCount - lastmodifiedDate lastmodifiedDate - creationDate creationDate - NSFileName / SkyFileName formatted 'title' + extension - NSFilePath / SkyFilePath path + filename [+ version-id] - SkyIsRootDirectory - no parentDocumentId - - SkyParentId parentDocumentId - SkyParentGID GID of parentDocumentId - NSFileMimeType isFolder + isLink + fileType - SkyLinkTarget objectLink (when !version && isLink) - NSFileType - SkyBlobPath - SkyFirstOwnerId GID of firstOwnerId - NSFileOwnerAccountNumber / SkyOwnerId lastOwnerId | currentOwnerId - SkyVersionName version - SkyVersionNumber NSNumber of version - SkyIsVersion - SkyTitle abstract - SkyCreationDate creationDate - SkyStatus status - SkyVersionCount versionCount - NSFileModificationDate / SkyLastModifiedDate lastmodifiedDate | archiveDate (versions) - projectNumber - projectName - projectId