32 lines
		
	
	
	
		
			751 B
			
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
	
		
			751 B
			
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
// Copyright 2021 Signal Messenger, LLC
 | 
						|
// SPDX-License-Identifier: AGPL-3.0-only
 | 
						|
 | 
						|
export enum SqliteErrorKind {
 | 
						|
  Corrupted = 'Corrupted',
 | 
						|
  Readonly = 'Readonly',
 | 
						|
  Unknown = 'Unknown',
 | 
						|
}
 | 
						|
 | 
						|
export function parseSqliteError(error?: Error): SqliteErrorKind {
 | 
						|
  const message = error?.message;
 | 
						|
  if (!message) {
 | 
						|
    return SqliteErrorKind.Unknown;
 | 
						|
  }
 | 
						|
 | 
						|
  if (
 | 
						|
    message.includes('SQLITE_CORRUPT') ||
 | 
						|
    message.includes('database disk image is malformed') ||
 | 
						|
    message.includes('file is not a database')
 | 
						|
  ) {
 | 
						|
    return SqliteErrorKind.Corrupted;
 | 
						|
  }
 | 
						|
 | 
						|
  if (
 | 
						|
    message.includes('SQLITE_READONLY') ||
 | 
						|
    message.includes('attempt to write a readonly database')
 | 
						|
  ) {
 | 
						|
    return SqliteErrorKind.Readonly;
 | 
						|
  }
 | 
						|
 | 
						|
  return SqliteErrorKind.Unknown;
 | 
						|
}
 |