mirror of https://github.com/certd/certd
				
				
				
			
		
			
				
	
	
		
			54 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
| import fs from 'fs';
 | ||
| /**
 | ||
|  * ## sqlite与postgres不同点
 | ||
|  * 1.
 | ||
|  * sqlite: AUTOINCREAMENT
 | ||
|  * postgresql: GENERATED BY DEFAULT AS IDENTITY
 | ||
|  *
 | ||
|  * 2.
 | ||
|  * sqlite: datetime
 | ||
|  * postgresql: timestamp
 | ||
|  *
 | ||
|  * 3.
 | ||
|  * sqlite: update sqlite_sequence set seq = 1000 where name = 'sys_role' ;
 | ||
|  * postgresql: select setval('sys_role_id_seq', 1000);
 | ||
|  *
 | ||
|  * 4.
 | ||
|  * sqlite: "disabled" boolean DEFAULT (0)
 | ||
|  * postgresql: "disabled" boolean DEFAULT (false)
 | ||
|  *
 | ||
|  * 5.
 | ||
|  * sqlite: last_insert_rowid()
 | ||
|  * postgresql: LASTVAL()
 | ||
|  *
 | ||
|  * 6.
 | ||
|  * sqlite: integer
 | ||
|  * postgresql: bigint
 | ||
|  */
 | ||
| function transform() {
 | ||
|   // 读取文件列表
 | ||
|   const sqliteFiles = fs.readdirSync('./migration/');
 | ||
|   const pgFiles = fs.readdirSync('./migration-pg');
 | ||
|   //找出pg里面没有的文件
 | ||
|   const notFiles = sqliteFiles.filter(file => !pgFiles.includes(file));
 | ||
|   for (const notFile of notFiles) {
 | ||
|     //开始转换
 | ||
|     const sqliteSql = fs.readFileSync(`./migration/${notFile}`, 'utf-8');
 | ||
|     let pgSql = sqliteSql.replace(/AUTOINCREMENT/g, 'GENERATED BY DEFAULT AS IDENTITY');
 | ||
|     pgSql = pgSql.replace(/datetime/g, 'timestamp');
 | ||
|     pgSql = pgSql.replace(/boolean DEFAULT \(0\)/g, 'boolean DEFAULT (false)');
 | ||
|     pgSql = pgSql.replace(/integer/g, 'bigint');
 | ||
|     pgSql = pgSql.replace(/last_insert_rowid\(\)/g, 'LASTVAL()');
 | ||
|     fs.writeFileSync(`./migration-pg/${notFile}`, pgSql);
 | ||
|   }
 | ||
| 
 | ||
|   if (notFiles.length > 0) {
 | ||
|     console.log('sqlite->pg 转换完成');
 | ||
| 
 | ||
|     throw new Error('sqlite->pg 转换完成,有更新,需要测试pg');
 | ||
|   } else {
 | ||
|     console.log('sql无需更新');
 | ||
|   }
 | ||
| }
 | ||
| transform();
 |