1
0
mirror of https://github.com/laurent22/joplin.git synced 2024-12-21 09:38:01 +02:00

Desktop, Cli, Mobile: Migrate profile in preparation for trash feature

This commit is contained in:
Laurent Cozic 2024-02-12 15:02:52 +00:00
parent 012fe0fb44
commit 115eb5defb
7 changed files with 45 additions and 62 deletions

View File

@ -801,6 +801,7 @@ packages/lib/services/database/migrations/42.js
packages/lib/services/database/migrations/43.js packages/lib/services/database/migrations/43.js
packages/lib/services/database/migrations/44.js packages/lib/services/database/migrations/44.js
packages/lib/services/database/migrations/45.js packages/lib/services/database/migrations/45.js
packages/lib/services/database/migrations/46.js
packages/lib/services/database/migrations/index.js packages/lib/services/database/migrations/index.js
packages/lib/services/database/sqlStringToLines.js packages/lib/services/database/sqlStringToLines.js
packages/lib/services/database/types.js packages/lib/services/database/types.js

1
.gitignore vendored
View File

@ -781,6 +781,7 @@ packages/lib/services/database/migrations/42.js
packages/lib/services/database/migrations/43.js packages/lib/services/database/migrations/43.js
packages/lib/services/database/migrations/44.js packages/lib/services/database/migrations/44.js
packages/lib/services/database/migrations/45.js packages/lib/services/database/migrations/45.js
packages/lib/services/database/migrations/46.js
packages/lib/services/database/migrations/index.js packages/lib/services/database/migrations/index.js
packages/lib/services/database/sqlStringToLines.js packages/lib/services/database/sqlStringToLines.js
packages/lib/services/database/types.js packages/lib/services/database/types.js

View File

@ -0,0 +1,26 @@
import { SqlQuery } from '../types';
export default (): (SqlQuery|string)[] => {
return [
'ALTER TABLE `notes` ADD COLUMN `deleted_time` INT NOT NULL DEFAULT 0',
'ALTER TABLE `folders` ADD COLUMN `deleted_time` INT NOT NULL DEFAULT 0',
'DROP VIEW tags_with_note_count',
`
CREATE VIEW tags_with_note_count AS
SELECT
tags.id as id,
tags.title as title,
tags.created_time as created_time,
tags.updated_time as updated_time,
COUNT(notes.id) as note_count,
SUM(CASE WHEN notes.todo_completed > 0 THEN 1 ELSE 0 END) AS todo_completed_count
FROM tags
LEFT JOIN note_tags nt on nt.tag_id = tags.id
LEFT JOIN notes on notes.id = nt.note_id
WHERE
notes.id IS NOT NULL
AND notes.deleted_time = 0
GROUP BY tags.id
`,
];
};

View File

@ -3,6 +3,7 @@ import migration42 from './42';
import migration43 from './43'; import migration43 from './43';
import migration44 from './44'; import migration44 from './44';
import migration45 from './45'; import migration45 from './45';
import migration46 from './46';
import { Migration } from '../types'; import { Migration } from '../types';
@ -11,6 +12,7 @@ const index: Migration[] = [
migration43, migration43,
migration44, migration44,
migration45, migration45,
migration46,
]; ];
export default index; export default index;

View File

@ -76,58 +76,6 @@ interface DatabaseTables {
[key: string]: DatabaseTable; [key: string]: DatabaseTable;
} }
// AUTO-GENERATED BY packages/tools/generate-database-types.js // AUTO-GENERATED BY packages/tools/generate-database-types.js
/* /*
@ -150,6 +98,7 @@ export interface DeletedItemEntity {
} }
export interface FolderEntity { export interface FolderEntity {
'created_time'?: number; 'created_time'?: number;
'deleted_time'?: number;
'encryption_applied'?: number; 'encryption_applied'?: number;
'encryption_cipher_text'?: string; 'encryption_cipher_text'?: string;
'icon'?: string; 'icon'?: string;
@ -272,6 +221,7 @@ export interface NoteEntity {
'body'?: string; 'body'?: string;
'conflict_original_id'?: string; 'conflict_original_id'?: string;
'created_time'?: number; 'created_time'?: number;
'deleted_time'?: number;
'encryption_applied'?: number; 'encryption_applied'?: number;
'encryption_cipher_text'?: string; 'encryption_cipher_text'?: string;
'id'?: string | null; 'id'?: string | null;
@ -425,6 +375,7 @@ export interface VersionEntity {
export const databaseSchema: DatabaseTables = { export const databaseSchema: DatabaseTables = {
folders: { folders: {
created_time: { type: 'number' }, created_time: { type: 'number' },
deleted_time: { type: 'number' },
encryption_applied: { type: 'number' }, encryption_applied: { type: 'number' },
encryption_cipher_text: { type: 'string' }, encryption_cipher_text: { type: 'string' },
icon: { type: 'string' }, icon: { type: 'string' },
@ -605,6 +556,7 @@ export const databaseSchema: DatabaseTables = {
body: { type: 'string' }, body: { type: 'string' },
conflict_original_id: { type: 'string' }, conflict_original_id: { type: 'string' },
created_time: { type: 'number' }, created_time: { type: 'number' },
deleted_time: { type: 'number' },
encryption_applied: { type: 'number' }, encryption_applied: { type: 'number' },
encryption_cipher_text: { type: 'string' }, encryption_cipher_text: { type: 'string' },
id: { type: 'string' }, id: { type: 'string' },
@ -646,15 +598,6 @@ export const databaseSchema: DatabaseTables = {
user_updated_time: { type: 'number' }, user_updated_time: { type: 'number' },
type_: { type: 'number' }, type_: { type: 'number' },
}, },
tags_with_note_count: {
created_time: { type: 'number' },
id: { type: 'string' },
note_count: { type: 'any' },
title: { type: 'string' },
todo_completed_count: { type: 'any' },
updated_time: { type: 'number' },
type_: { type: 'number' },
},
items_normalized: { items_normalized: {
body: { type: 'string' }, body: { type: 'string' },
id: { type: 'number' }, id: { type: 'number' },
@ -709,4 +652,13 @@ export const databaseSchema: DatabaseTables = {
value: { type: 'any' }, value: { type: 'any' },
type_: { type: 'number' }, type_: { type: 'number' },
}, },
tags_with_note_count: {
created_time: { type: 'number' },
id: { type: 'string' },
note_count: { type: 'any' },
title: { type: 'string' },
todo_completed_count: { type: 'any' },
updated_time: { type: 'number' },
type_: { type: 'number' },
},
}; };

View File

@ -3,7 +3,7 @@
import { Size } from './types'; import { Size } from './types';
// AUTO-GENERATED by generate-database-type // AUTO-GENERATED by generate-database-type
type ListRendererDatabaseDependency = 'folder.created_time' | 'folder.encryption_applied' | 'folder.encryption_cipher_text' | 'folder.icon' | 'folder.id' | 'folder.is_shared' | 'folder.master_key_id' | 'folder.parent_id' | 'folder.share_id' | 'folder.title' | 'folder.updated_time' | 'folder.user_created_time' | 'folder.user_data' | 'folder.user_updated_time' | 'folder.type_' | 'note.altitude' | 'note.application_data' | 'note.author' | 'note.body' | 'note.conflict_original_id' | 'note.created_time' | 'note.encryption_applied' | 'note.encryption_cipher_text' | 'note.id' | 'note.is_conflict' | 'note.is_shared' | 'note.is_todo' | 'note.latitude' | 'note.longitude' | 'note.markup_language' | 'note.master_key_id' | 'note.order' | 'note.parent_id' | 'note.share_id' | 'note.source' | 'note.source_application' | 'note.source_url' | 'note.title' | 'note.todo_completed' | 'note.todo_due' | 'note.updated_time' | 'note.user_created_time' | 'note.user_data' | 'note.user_updated_time' | 'note.type_'; type ListRendererDatabaseDependency = 'folder.created_time' | 'folder.deleted_time' | 'folder.encryption_applied' | 'folder.encryption_cipher_text' | 'folder.icon' | 'folder.id' | 'folder.is_shared' | 'folder.master_key_id' | 'folder.parent_id' | 'folder.share_id' | 'folder.title' | 'folder.updated_time' | 'folder.user_created_time' | 'folder.user_data' | 'folder.user_updated_time' | 'folder.type_' | 'note.altitude' | 'note.application_data' | 'note.author' | 'note.body' | 'note.conflict_original_id' | 'note.created_time' | 'note.deleted_time' | 'note.encryption_applied' | 'note.encryption_cipher_text' | 'note.id' | 'note.is_conflict' | 'note.is_shared' | 'note.is_todo' | 'note.latitude' | 'note.longitude' | 'note.markup_language' | 'note.master_key_id' | 'note.order' | 'note.parent_id' | 'note.share_id' | 'note.source' | 'note.source_application' | 'note.source_url' | 'note.title' | 'note.todo_completed' | 'note.todo_due' | 'note.updated_time' | 'note.user_created_time' | 'note.user_data' | 'note.user_updated_time' | 'note.type_';
// AUTO-GENERATED by generate-database-type // AUTO-GENERATED by generate-database-type
export enum ItemFlow { export enum ItemFlow {

View File

@ -554,6 +554,7 @@ share_id: ${note.share_id || ''}
conflict_original_id: conflict_original_id:
master_key_id: master_key_id:
user_data: user_data:
deleted_time: 0
type_: 1`; type_: 1`;
} }