Summary: I updated the wiki too - https://secure.phabricator.com/w/projects/pebkac/ - with what I am thinking right now. Rough plan here is - next diff: - implement editors and transactions - implement "web type" for contact source - /pebkac/item/new/ will be the entry point for this - implement "actions" on a contact - probably some "polish" on the scaffolding laid out here; like "create" permissions maybs - diffs after that: - implement "twitter" type for source - implement email reply handler stuff for item and source Probs a great time to blast huge holes in all this stuff. :D Test Plan: these pages load and arc lint doesn't complain Reviewers: epriestley Reviewed By: epriestley CC: Korvin, epriestley, aran, chad Differential Revision: https://secure.phabricator.com/D7465
		
			
				
	
	
		
			260 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			SQL
		
	
	
	
	
	
			
		
		
	
	
			260 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			SQL
		
	
	
	
	
	
CREATE TABLE {$NAMESPACE}_nuance.nuance_item (
 | 
						|
  id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
 | 
						|
  phid VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  ownerPHID VARCHAR(64) COLLATE utf8_bin,
 | 
						|
  requestorPHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  sourcePHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  sourceLabel VARCHAR(255),
 | 
						|
  status INT UNSIGNED NOT NULL,
 | 
						|
  data longtext NOT NULL COLLATE utf8_bin,
 | 
						|
  mailKey VARCHAR(20) NOT NULL COLLATE utf8_bin,
 | 
						|
  dateCreated INT UNSIGNED NOT NULL,
 | 
						|
  dateModified INT UNSIGNED NOT NULL,
 | 
						|
  dateNuanced INT UNSIGNED NOT NULL,
 | 
						|
  UNIQUE KEY `key_phid` (phid),
 | 
						|
  KEY `key_source` (sourcePHID, status, dateNuanced, id),
 | 
						|
  KEY `key_owner` (ownerPHID, status, dateNuanced, id),
 | 
						|
  KEY `key_contacter` (requestorPHID, status, dateNuanced, id)
 | 
						|
) ENGINE=InnoDB, COLLATE utf8_general_ci;
 | 
						|
 | 
						|
CREATE TABLE {$NAMESPACE}_nuance.nuance_itemtransaction (
 | 
						|
  id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
 | 
						|
  phid VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  authorPHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  objectPHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  viewPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  editPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  commentPHID VARCHAR(64) COLLATE utf8_bin,
 | 
						|
  commentVersion INT UNSIGNED NOT NULL,
 | 
						|
  transactionType VARCHAR(32) NOT NULL COLLATE utf8_bin,
 | 
						|
  oldValue LONGTEXT NOT NULL COLLATE utf8_bin,
 | 
						|
  newValue LONGTEXT NOT NULL COLLATE utf8_bin,
 | 
						|
  contentSource LONGTEXT NOT NULL COLLATE utf8_bin,
 | 
						|
  metadata LONGTEXT NOT NULL COLLATE utf8_bin,
 | 
						|
  dateCreated INT UNSIGNED NOT NULL,
 | 
						|
  dateModified INT UNSIGNED NOT NULL,
 | 
						|
 | 
						|
  UNIQUE KEY `key_phid` (phid),
 | 
						|
  KEY `key_object` (objectPHID)
 | 
						|
 | 
						|
) ENGINE=InnoDB, COLLATE utf8_general_ci;
 | 
						|
 | 
						|
CREATE TABLE {$NAMESPACE}_nuance.nuance_itemtransaction_comment (
 | 
						|
  id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
 | 
						|
  phid VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  transactionPHID VARCHAR(64) COLLATE utf8_bin,
 | 
						|
  authorPHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  viewPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  editPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  commentVersion INT UNSIGNED NOT NULL,
 | 
						|
  content LONGTEXT NOT NULL COLLATE utf8_bin,
 | 
						|
  contentSource LONGTEXT NOT NULL COLLATE utf8_bin,
 | 
						|
  isDeleted BOOL NOT NULL,
 | 
						|
  dateCreated INT UNSIGNED NOT NULL,
 | 
						|
  dateModified INT UNSIGNED NOT NULL,
 | 
						|
 | 
						|
  UNIQUE KEY `key_phid` (phid),
 | 
						|
  UNIQUE KEY `key_version` (transactionPHID, commentVersion)
 | 
						|
 | 
						|
) ENGINE=InnoDB, COLLATE utf8_general_ci;
 | 
						|
 | 
						|
CREATE TABLE {$NAMESPACE}_nuance.nuance_source (
 | 
						|
  id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
 | 
						|
  phid VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  name VARCHAR(255),
 | 
						|
  type INT UNSIGNED NOT NULL,
 | 
						|
  data longtext NOT NULL COLLATE utf8_bin,
 | 
						|
  mailKey VARCHAR(20) NOT NULL COLLATE utf8_bin,
 | 
						|
  viewPolicy VARCHAR(64) NOT NULL,
 | 
						|
  editPolicy VARCHAR(64) NOT NULL,
 | 
						|
  dateCreated INT UNSIGNED NOT NULL,
 | 
						|
  dateModified INT UNSIGNED NOT NULL,
 | 
						|
  UNIQUE KEY `key_phid` (phid),
 | 
						|
  KEY `key_type` (type, dateModified)
 | 
						|
) ENGINE=InnoDB, COLLATE utf8_general_ci;
 | 
						|
 | 
						|
CREATE TABLE {$NAMESPACE}_nuance.nuance_sourcetransaction (
 | 
						|
  id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
 | 
						|
  phid VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  authorPHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  objectPHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  viewPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  editPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  commentPHID VARCHAR(64) COLLATE utf8_bin,
 | 
						|
  commentVersion INT UNSIGNED NOT NULL,
 | 
						|
  transactionType VARCHAR(32) NOT NULL COLLATE utf8_bin,
 | 
						|
  oldValue LONGTEXT NOT NULL COLLATE utf8_bin,
 | 
						|
  newValue LONGTEXT NOT NULL COLLATE utf8_bin,
 | 
						|
  contentSource LONGTEXT NOT NULL COLLATE utf8_bin,
 | 
						|
  metadata LONGTEXT NOT NULL COLLATE utf8_bin,
 | 
						|
  dateCreated INT UNSIGNED NOT NULL,
 | 
						|
  dateModified INT UNSIGNED NOT NULL,
 | 
						|
 | 
						|
  UNIQUE KEY `key_phid` (phid),
 | 
						|
  KEY `key_object` (objectPHID)
 | 
						|
 | 
						|
) ENGINE=InnoDB, COLLATE utf8_general_ci;
 | 
						|
 | 
						|
CREATE TABLE {$NAMESPACE}_nuance.nuance_sourcetransaction_comment (
 | 
						|
  id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
 | 
						|
  phid VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  transactionPHID VARCHAR(64) COLLATE utf8_bin,
 | 
						|
  authorPHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  viewPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  editPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  commentVersion INT UNSIGNED NOT NULL,
 | 
						|
  content LONGTEXT NOT NULL COLLATE utf8_bin,
 | 
						|
  contentSource LONGTEXT NOT NULL COLLATE utf8_bin,
 | 
						|
  isDeleted BOOL NOT NULL,
 | 
						|
  dateCreated INT UNSIGNED NOT NULL,
 | 
						|
  dateModified INT UNSIGNED NOT NULL,
 | 
						|
 | 
						|
  UNIQUE KEY `key_phid` (phid),
 | 
						|
  UNIQUE KEY `key_version` (transactionPHID, commentVersion)
 | 
						|
 | 
						|
) ENGINE=InnoDB, COLLATE utf8_general_ci;
 | 
						|
 | 
						|
CREATE TABLE {$NAMESPACE}_nuance.nuance_queue (
 | 
						|
  id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
 | 
						|
  phid VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  name VARCHAR(255),
 | 
						|
  mailKey VARCHAR(20) NOT NULL COLLATE utf8_bin,
 | 
						|
  viewPolicy VARCHAR(64) NOT NULL,
 | 
						|
  editPolicy VARCHAR(64) NOT NULL,
 | 
						|
  dateCreated INT UNSIGNED NOT NULL,
 | 
						|
  dateModified INT UNSIGNED NOT NULL,
 | 
						|
  UNIQUE KEY `key_phid` (phid)
 | 
						|
) ENGINE=InnoDB, COLLATE utf8_general_ci;
 | 
						|
 | 
						|
CREATE TABLE {$NAMESPACE}_nuance.nuance_queuetransaction (
 | 
						|
  id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
 | 
						|
  phid VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  authorPHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  objectPHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  viewPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  editPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  commentPHID VARCHAR(64) COLLATE utf8_bin,
 | 
						|
  commentVersion INT UNSIGNED NOT NULL,
 | 
						|
  transactionType VARCHAR(32) NOT NULL COLLATE utf8_bin,
 | 
						|
  oldValue LONGTEXT NOT NULL COLLATE utf8_bin,
 | 
						|
  newValue LONGTEXT NOT NULL COLLATE utf8_bin,
 | 
						|
  contentSource LONGTEXT NOT NULL COLLATE utf8_bin,
 | 
						|
  metadata LONGTEXT NOT NULL COLLATE utf8_bin,
 | 
						|
  dateCreated INT UNSIGNED NOT NULL,
 | 
						|
  dateModified INT UNSIGNED NOT NULL,
 | 
						|
 | 
						|
  UNIQUE KEY `key_phid` (phid),
 | 
						|
  KEY `key_object` (objectPHID)
 | 
						|
 | 
						|
) ENGINE=InnoDB, COLLATE utf8_general_ci;
 | 
						|
 | 
						|
CREATE TABLE {$NAMESPACE}_nuance.nuance_queuetransaction_comment (
 | 
						|
  id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
 | 
						|
  phid VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  transactionPHID VARCHAR(64) COLLATE utf8_bin,
 | 
						|
  authorPHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  viewPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  editPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  commentVersion INT UNSIGNED NOT NULL,
 | 
						|
  content LONGTEXT NOT NULL COLLATE utf8_bin,
 | 
						|
  contentSource LONGTEXT NOT NULL COLLATE utf8_bin,
 | 
						|
  isDeleted BOOL NOT NULL,
 | 
						|
  dateCreated INT UNSIGNED NOT NULL,
 | 
						|
  dateModified INT UNSIGNED NOT NULL,
 | 
						|
 | 
						|
  UNIQUE KEY `key_phid` (phid),
 | 
						|
  UNIQUE KEY `key_version` (transactionPHID, commentVersion)
 | 
						|
 | 
						|
) ENGINE=InnoDB, COLLATE utf8_general_ci;
 | 
						|
 | 
						|
CREATE TABLE {$NAMESPACE}_nuance.nuance_queueitem (
 | 
						|
  id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
 | 
						|
  queuePHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  itemPHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  itemStatus INT UNSIGNED NOT NULL,
 | 
						|
  itemDateNuanced INT UNSIGNED NOT NULL,
 | 
						|
  dateCreated INT UNSIGNED NOT NULL,
 | 
						|
  dateModified INT UNSIGNED NOT NULL,
 | 
						|
  UNIQUE KEY `key_one_per_queue` (itemPHID, queuePHID),
 | 
						|
  KEY `key_queue` (queuePHID, itemStatus, itemDateNuanced, id)
 | 
						|
) ENGINE=InnoDB, COLLATE utf8_general_ci;
 | 
						|
 | 
						|
CREATE TABLE {$NAMESPACE}_nuance.nuance_requestor (
 | 
						|
  id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
 | 
						|
  phid VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  data longtext NOT NULL COLLATE utf8_bin,
 | 
						|
  dateCreated INT UNSIGNED NOT NULL,
 | 
						|
  dateModified INT UNSIGNED NOT NULL,
 | 
						|
  UNIQUE KEY `key_phid` (phid)
 | 
						|
) ENGINE=InnoDB, COLLATE utf8_general_ci;
 | 
						|
 | 
						|
CREATE TABLE {$NAMESPACE}_nuance.nuance_requestortransaction (
 | 
						|
  id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
 | 
						|
  phid VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  authorPHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  objectPHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  viewPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  editPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  commentPHID VARCHAR(64) COLLATE utf8_bin,
 | 
						|
  commentVersion INT UNSIGNED NOT NULL,
 | 
						|
  transactionType VARCHAR(32) NOT NULL COLLATE utf8_bin,
 | 
						|
  oldValue LONGTEXT NOT NULL COLLATE utf8_bin,
 | 
						|
  newValue LONGTEXT NOT NULL COLLATE utf8_bin,
 | 
						|
  contentSource LONGTEXT NOT NULL COLLATE utf8_bin,
 | 
						|
  metadata LONGTEXT NOT NULL COLLATE utf8_bin,
 | 
						|
  dateCreated INT UNSIGNED NOT NULL,
 | 
						|
  dateModified INT UNSIGNED NOT NULL,
 | 
						|
 | 
						|
  UNIQUE KEY `key_phid` (phid),
 | 
						|
  KEY `key_object` (objectPHID)
 | 
						|
 | 
						|
) ENGINE=InnoDB, COLLATE utf8_general_ci;
 | 
						|
 | 
						|
CREATE TABLE {$NAMESPACE}_nuance.nuance_requestortransaction_comment (
 | 
						|
  id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
 | 
						|
  phid VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  transactionPHID VARCHAR(64) COLLATE utf8_bin,
 | 
						|
  authorPHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  viewPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  editPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  commentVersion INT UNSIGNED NOT NULL,
 | 
						|
  content LONGTEXT NOT NULL COLLATE utf8_bin,
 | 
						|
  contentSource LONGTEXT NOT NULL COLLATE utf8_bin,
 | 
						|
  isDeleted BOOL NOT NULL,
 | 
						|
  dateCreated INT UNSIGNED NOT NULL,
 | 
						|
  dateModified INT UNSIGNED NOT NULL,
 | 
						|
 | 
						|
  UNIQUE KEY `key_phid` (phid),
 | 
						|
  UNIQUE KEY `key_version` (transactionPHID, commentVersion)
 | 
						|
 | 
						|
) ENGINE=InnoDB, COLLATE utf8_general_ci;
 | 
						|
 | 
						|
CREATE TABLE {$NAMESPACE}_nuance.nuance_requestorsource (
 | 
						|
  id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
 | 
						|
  requestorPHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  sourcePHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  sourceKey VARCHAR(128) NOT NULL COLLATE utf8_bin,
 | 
						|
  data LONGTEXT NOT NULL COLLATE utf8_bin,
 | 
						|
  dateCreated INT UNSIGNED NOT NULL,
 | 
						|
  dateModified INT UNSIGNED NOT NULL,
 | 
						|
  KEY `key_requestor` (requestorPHID, id),
 | 
						|
  KEY `key_source` (sourcePHID, id),
 | 
						|
  UNIQUE KEY `key_source_key` (sourcePHID, sourceKey)
 | 
						|
) ENGINE=InnoDB, COLLATE utf8_general_ci;
 | 
						|
 | 
						|
CREATE TABLE {$NAMESPACE}_nuance.edge (
 | 
						|
  src VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  type VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  dst VARCHAR(64) NOT NULL COLLATE utf8_bin,
 | 
						|
  dateCreated INT UNSIGNED NOT NULL,
 | 
						|
  seq INT UNSIGNED NOT NULL,
 | 
						|
  dataID INT UNSIGNED,
 | 
						|
  PRIMARY KEY (src, type, dst),
 | 
						|
  KEY (src, type, dateCreated, seq)
 | 
						|
) ENGINE=InnoDB, COLLATE utf8_general_ci;
 | 
						|
 | 
						|
CREATE TABLE {$NAMESPACE}_nuance.edgedata (
 | 
						|
  id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
 | 
						|
  data LONGTEXT NOT NULL COLLATE utf8_bin
 | 
						|
) ENGINE=InnoDB, COLLATE utf8_general_ci;
 |