You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							71 lines
						
					
					
						
							2.5 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							71 lines
						
					
					
						
							2.5 KiB
						
					
					
				
								CREATE TABLE favorites (
							 | 
						|
								  user_uuid   TEXT NOT NULL REFERENCES users(uuid),
							 | 
						|
								  cipher_uuid TEXT NOT NULL REFERENCES ciphers(uuid),
							 | 
						|
								
							 | 
						|
								  PRIMARY KEY (user_uuid, cipher_uuid)
							 | 
						|
								);
							 | 
						|
								
							 | 
						|
								-- Transfer favorite status for user-owned ciphers.
							 | 
						|
								INSERT INTO favorites(user_uuid, cipher_uuid)
							 | 
						|
								SELECT user_uuid, uuid
							 | 
						|
								FROM ciphers
							 | 
						|
								WHERE favorite = 1
							 | 
						|
								  AND user_uuid IS NOT NULL;
							 | 
						|
								
							 | 
						|
								-- Drop the `favorite` column from the `ciphers` table, using the 12-step
							 | 
						|
								-- procedure from <https://www.sqlite.org/lang_altertable.html#altertabrename>.
							 | 
						|
								-- Note that some steps aren't applicable and are omitted.
							 | 
						|
								
							 | 
						|
								-- 1. If foreign key constraints are enabled, disable them using PRAGMA foreign_keys=OFF.
							 | 
						|
								--
							 | 
						|
								-- Diesel runs each migration in its own transaction. `PRAGMA foreign_keys`
							 | 
						|
								-- is a no-op within a transaction, so this step must be done outside of this
							 | 
						|
								-- file, before starting the Diesel migrations.
							 | 
						|
								
							 | 
						|
								-- 2. Start a transaction.
							 | 
						|
								--
							 | 
						|
								-- Diesel already runs each migration in its own transaction.
							 | 
						|
								
							 | 
						|
								-- 4. Use CREATE TABLE to construct a new table "new_X" that is in the
							 | 
						|
								--    desired revised format of table X. Make sure that the name "new_X" does
							 | 
						|
								--    not collide with any existing table name, of course.
							 | 
						|
								
							 | 
						|
								CREATE TABLE new_ciphers(
							 | 
						|
								  uuid              TEXT     NOT NULL PRIMARY KEY,
							 | 
						|
								  created_at        DATETIME NOT NULL,
							 | 
						|
								  updated_at        DATETIME NOT NULL,
							 | 
						|
								  user_uuid         TEXT     REFERENCES users(uuid),
							 | 
						|
								  organization_uuid TEXT     REFERENCES organizations(uuid),
							 | 
						|
								  atype             INTEGER  NOT NULL,
							 | 
						|
								  name              TEXT     NOT NULL,
							 | 
						|
								  notes             TEXT,
							 | 
						|
								  fields            TEXT,
							 | 
						|
								  data              TEXT     NOT NULL,
							 | 
						|
								  password_history  TEXT,
							 | 
						|
								  deleted_at        DATETIME
							 | 
						|
								);
							 | 
						|
								
							 | 
						|
								-- 5. Transfer content from X into new_X using a statement like:
							 | 
						|
								--    INSERT INTO new_X SELECT ... FROM X.
							 | 
						|
								
							 | 
						|
								INSERT INTO new_ciphers(uuid, created_at, updated_at, user_uuid, organization_uuid, atype,
							 | 
						|
								                        name, notes, fields, data, password_history, deleted_at)
							 | 
						|
								SELECT uuid, created_at, updated_at, user_uuid, organization_uuid, atype,
							 | 
						|
								       name, notes, fields, data, password_history, deleted_at
							 | 
						|
								FROM ciphers;
							 | 
						|
								
							 | 
						|
								-- 6. Drop the old table X: DROP TABLE X.
							 | 
						|
								
							 | 
						|
								DROP TABLE ciphers;
							 | 
						|
								
							 | 
						|
								-- 7. Change the name of new_X to X using: ALTER TABLE new_X RENAME TO X.
							 | 
						|
								
							 | 
						|
								ALTER TABLE new_ciphers RENAME TO ciphers;
							 | 
						|
								
							 | 
						|
								-- 11. Commit the transaction started in step 2.
							 | 
						|
								
							 | 
						|
								-- 12. If foreign keys constraints were originally enabled, reenable them now.
							 | 
						|
								--
							 | 
						|
								-- `PRAGMA foreign_keys` is scoped to a database connection, and Diesel
							 | 
						|
								-- migrations are run in a separate database connection that is closed once
							 | 
						|
								-- the migrations finish.
							 | 
						|
								
							 |