Repository navigation
Expand file tree
/
Copy pathlrcat_diff.bat
More file actions
143 lines (133 loc) · 4.85 KB
/
Copy pathlrcat_diff.bat
File metadata and controls
143 lines (133 loc) · 4.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
@echo off
if [%2]==[] ( echo ERROR: I need two .lrcat filenames to compare. && exit -b 1 )
if not exist "%~1" ( echo ERROR: %1 doesn't exist. && exit -b 2 )
if not exist "%~2" ( echo ERROR: %2 doesn't exist. && exit -b 2 )
setlocal DisableDelayedExpansion
SET "FN1=%1"
setlocal EnableDelayedExpansion
SET FN1U=!FN1: =%%20!
setlocal DisableDelayedExpansion
SET "FN2=%2"
setlocal EnableDelayedExpansion
SET FN2U=!FN2: =%%20!
setlocal DisableDelayedExpansion
SET query=^
^
ATTACH 'file::memory:' as tmp; ^
^
ATTACH 'file:%FN1U%^?readonly=1^&immutable=1' AS lrcat1; ^
DROP TABLE IF EXISTS tmp.file1; ^
CREATE TABLE tmp.file1 AS ^
SELECT ^
adobe_images.id_global AS gid, ^
adobe_images.id_local AS id, ^
AgLibraryFolder.pathFromRoot^|^|AgLibraryFile.baseName AS path, ^
MAX(DATETIME(hs.dateCreated + 978310800 + 3600,'unixepoch')) AS date, ^
COUNT(hs.id_global) AS edits, ^
NULL AS keywords, ^
CASE pick WHEN 1 THEN ' (pick)' WHEN -1 THEN ' (reject)' ELSE '' END AS pickstate, ^
CASE touchTime WHEN 0 THEN "0" ELSE DATETIME(touchTime + 978310800 + 3600,'unixepoch') END AS tdate, ^
CASE WHEN hs.name LIKE 'Import%%' THEN hs.name ELSE hs.name ^|^| COALESCE (': ' ^|^| hs.relValueString, '') END AS val ^
FROM ^
lrcat1.Adobe_libraryImageDevelopHistoryStep AS hs ^
LEFT JOIN adobe_images on adobe_images.id_local=hs.image ^
LEFT JOIN AgLibraryFile on AgLibraryFile.id_local=adobe_images.rootFile ^
LEFT JOIN AgLibraryFolder on AgLibraryFolder.id_local=AgLibraryFile.folder ^
WHERE hs.name NOT LIKE 'Export %' ^
GROUP BY id ^
ORDER BY date DESC; ^
^
UPDATE tmp.file1 SET keywords=kws.keyws FROM ( ^
SELECT ^
GROUP_CONCAT(kw.name) AS keyws, ^
kwi.image AS image ^
FROM ^
AgLibraryKeywordImage AS kwi, ^
AgLibraryKeyword AS kw ^
WHERE ^
kw.id_local=kwi.tag ^
GROUP BY kwi.image ^
) AS kws ^
WHERE kws.image=id; ^
^
DETACH lrcat1; ^
^
ATTACH 'file:%FN2U%^?readonly=1^&immutable=1' AS lrcat2; ^
DROP TABLE IF EXISTS tmp.file2; ^
CREATE TABLE tmp.file2 AS ^
SELECT ^
adobe_images.id_global AS gid, ^
adobe_images.id_local AS id, ^
AgLibraryFolder.pathFromRoot^|^|AgLibraryFile.baseName AS path, ^
MAX(DATETIME(hs.dateCreated + 978310800 + 3600,'unixepoch')) AS date, ^
COUNT(hs.id_global) AS edits, ^
NULL AS keywords, ^
CASE pick WHEN 1 THEN ' (pick)' WHEN -1 THEN ' (reject)' ELSE '' END AS pickstate, ^
CASE touchTime WHEN 0 THEN "0" ELSE DATETIME(touchTime + 978310800 + 3600,'unixepoch') END AS tdate, ^
CASE WHEN hs.name LIKE 'Import%%' THEN hs.name ELSE hs.name ^|^| COALESCE (': ' ^|^| hs.relValueString, '') END AS val ^
FROM ^
lrcat2.Adobe_libraryImageDevelopHistoryStep AS hs ^
LEFT JOIN adobe_images on adobe_images.id_local=hs.image ^
LEFT JOIN AgLibraryFile on AgLibraryFile.id_local=adobe_images.rootFile ^
LEFT JOIN AgLibraryFolder on AgLibraryFolder.id_local=AgLibraryFile.folder ^
WHERE hs.name NOT LIKE 'Export %' ^
GROUP BY id ^
ORDER BY date DESC; ^
^
UPDATE tmp.file2 SET keywords=kws.keyws FROM ( ^
SELECT ^
GROUP_CONCAT(kw.name) AS keyws, ^
kwi.image AS image ^
FROM ^
AgLibraryKeywordImage AS kwi, ^
AgLibraryKeyword AS kw ^
WHERE ^
kw.id_local=kwi.tag ^
GROUP BY kwi.image ^
) AS kws ^
WHERE kws.image=id; ^
^
DETACH lrcat2; ^
^
DROP TABLE IF EXISTS tmp.sum; ^
CREATE TABLE tmp.sum AS ^
SELECT file1.path AS path, ^
file1.date AS edate1, file1.tdate AS tdate1, file1.edits as edits1, file1.val AS lastedit1, file1.keywords AS keywords1, file1.pickstate AS pick1, ^
file2.date AS edate2, file2.tdate AS tdate2, file2.edits as edits2, file2.val AS lastedit2, file2.keywords AS keywords2, file2.pickstate AS pick2 ^
FROM file1 ^
LEFT JOIN file2 USING(gid) ^
^
UNION ^
^
SELECT file2.path AS path, ^
file1.date AS edate1, file1.tdate AS tdate1, file1.edits as edits1, file1.val AS lastedit1, file1.keywords AS keywords1, file1.pickstate AS pick1, ^
file2.date AS edate2, file2.tdate AS tdate2, file2.edits as edits2, file2.val AS lastedit2, file2.keywords AS keywords2, file2.pickstate AS pick2 ^
FROM file2 ^
LEFT JOIN file1 USING(gid) WHERE file1.date IS NULL ^
; ^
^
SELECT path, ^
CASE ^
WHEN edate2 IS NULL THEN 'L-only' ^
WHEN edate1 IS NULL THEN 'R-only' ^
WHEN (edate1^>edate2 OR tdate1^>tdate2) THEN 'L-newer' ^
WHEN (edate2^>edate1 OR tdate2^>tdate1) THEN 'R-newer' ^
ELSE 'eq' END ^
AS diff, ^
tdate1,edate1,edits1,lastedit1,keywords1,pick1, ^
tdate2,edate2,edits2,lastedit2,keywords2,pick2 ^
FROM sum ^
WHERE diff^<^>'eq' ^
ORDER BY diff,path ^
;
%~dp0sqlite3.exe -csv -header :memory: "%query%" >%TEMP%\sql.csv
if errorlevel 1 goto err
type %TEMP%\sql.csv
rem start powershell -WindowStyle hidden -command "get-content -Encoding UTF8 %TEMP%\sql.csv |convertfrom-csv |out-gridview -title '%1 <-> %2' -wait; remove-item '%TEMP%\sql.csv'"
rem format-table @{e='diff';width=7},@{e='path';width=30},tdate1,val1,tdate2,val2 -wrap |out-host $Host.ui.RawUI.WindowTitle='%1';
goto :end
:err
echo ERROR.
pause
:end
exit