Skip to content

Commit 0fc1d4c

Browse files
committed
adding export from 3.2 with sqlite
1 parent bef5a56 commit 0fc1d4c

File tree

8 files changed

+45
-659
lines changed

8 files changed

+45
-659
lines changed

database/app_v3_2/postgres/document_versions.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package postgres_app_v3_3
1+
package postgres_app_v3_2
22

33
import (
44
"database/sql"

database/app_v3_2/postgres/nodes.go

Lines changed: 1 addition & 266 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
1-
package postgres_app_v3_3
1+
package postgres_app_v3_2
22

33
import (
44
"database/sql"
55
"fmt"
66
"os"
7-
"strings"
8-
"time"
97

10-
"github.com/google/uuid"
11-
"github.com/papermerge/pmdump/constants"
128
models "github.com/papermerge/pmdump/models/app_v3_3"
139
)
1410

@@ -191,264 +187,3 @@ func GetUserNodes(db *sql.DB, u *interface{}) error {
191187

192188
return nil
193189
}
194-
195-
func ForEachSourceNode(
196-
db *sql.DB,
197-
n *models.Node,
198-
targetParentID uuid.UUID,
199-
targetUserID uuid.UUID,
200-
op models.TargetNodeOperation,
201-
) {
202-
203-
if n.NodeType == models.NodeDocumentType {
204-
if err := InsertDocument(db, n, targetParentID, targetUserID); err != nil {
205-
fmt.Fprintf(os.Stderr, "Document insert error: %v\n", err)
206-
}
207-
} else {
208-
if n.Title != constants.INBOX && n.Title != constants.HOME {
209-
if err := InsertFolder(db, n, targetParentID, targetUserID); err != nil {
210-
fmt.Fprintf(os.Stderr, "Folder insert error: %v\n", err)
211-
}
212-
}
213-
}
214-
215-
for _, child := range n.Children {
216-
if n.Title == constants.HOME || n.Title == constants.INBOX {
217-
ForEachSourceNode(
218-
db,
219-
child,
220-
// this is either Home ID or Inbox ID of target user
221-
targetParentID,
222-
targetUserID,
223-
op,
224-
)
225-
} else {
226-
ForEachSourceNode(
227-
db,
228-
child,
229-
n.ID,
230-
targetUserID,
231-
op,
232-
)
233-
}
234-
}
235-
}
236-
237-
func InsertPage(
238-
db *sql.DB,
239-
docVer models.DocumentVersion,
240-
page models.Page,
241-
) error {
242-
noHyphenID := strings.ReplaceAll(page.ID.String(), "-", "")
243-
noHyphenDocumentVersionID := strings.ReplaceAll(docVer.ID.String(), "-", "")
244-
245-
_, err := db.Exec(
246-
"INSERT INTO pages (id, document_version_id, number, page_count, lang) VALUES (?, ?, ?, ?, ?)",
247-
noHyphenID,
248-
noHyphenDocumentVersionID,
249-
page.Number,
250-
len(docVer.Pages),
251-
constants.ENG,
252-
)
253-
254-
if err != nil {
255-
return fmt.Errorf(
256-
"insert page ID=%q, number %q failed: %v",
257-
noHyphenID,
258-
page.Number,
259-
err,
260-
)
261-
}
262-
263-
return nil
264-
}
265-
266-
func InsertDocumentVersion(
267-
db *sql.DB,
268-
n *models.Node,
269-
docVer models.DocumentVersion,
270-
) error {
271-
noHyphenID := strings.ReplaceAll(docVer.ID.String(), "-", "")
272-
noHyphenDocumentID := strings.ReplaceAll(n.ID.String(), "-", "")
273-
274-
_, err := db.Exec(
275-
"INSERT INTO document_versions (id, document_id, number, file_name, lang, size, page_count) VALUES (?, ?, ?, ?, ?, ?, ?)",
276-
noHyphenID,
277-
noHyphenDocumentID,
278-
docVer.Number,
279-
docVer.FileName,
280-
constants.ENG,
281-
0,
282-
len(docVer.Pages),
283-
)
284-
if err != nil {
285-
return fmt.Errorf(
286-
"insert document version %q, number %q, file_name %q failed: %v",
287-
noHyphenID,
288-
docVer.Number,
289-
docVer.FileName,
290-
err,
291-
)
292-
}
293-
294-
for _, page := range docVer.Pages {
295-
err = InsertPage(
296-
db, docVer, page,
297-
)
298-
if err != nil {
299-
return fmt.Errorf(
300-
"insert page for document version %q, number %q, file_name %q failed: %v",
301-
noHyphenID,
302-
docVer.Number,
303-
docVer.FileName,
304-
err,
305-
)
306-
}
307-
}
308-
309-
return nil
310-
}
311-
312-
func InsertDocument(
313-
db *sql.DB,
314-
n *models.Node,
315-
parentID uuid.UUID,
316-
userID uuid.UUID,
317-
) error {
318-
tx, err := db.Begin()
319-
if err != nil {
320-
return err
321-
}
322-
323-
// Defer a rollback in case of failure
324-
defer func() {
325-
if err != nil {
326-
tx.Rollback()
327-
}
328-
}()
329-
330-
noHyphenParentID := strings.ReplaceAll(parentID.String(), "-", "")
331-
noHyphenID := strings.ReplaceAll(n.ID.String(), "-", "")
332-
noHyphenUserID := strings.ReplaceAll(userID.String(), "-", "")
333-
334-
currentTime := time.Now().Format("2006-01-02 15:04:05")
335-
336-
_, err = db.Exec(
337-
"INSERT INTO nodes (id, title, lang, ctype, user_id, parent_id, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)",
338-
noHyphenID,
339-
n.Title,
340-
constants.ENG,
341-
constants.DOCUMENT,
342-
noHyphenUserID,
343-
noHyphenParentID,
344-
currentTime,
345-
currentTime,
346-
)
347-
if err != nil {
348-
return fmt.Errorf(
349-
"insert node %q, parentID %q, userID %q: %v",
350-
n.Title,
351-
noHyphenParentID,
352-
noHyphenUserID,
353-
err,
354-
)
355-
}
356-
357-
_, err = db.Exec(
358-
"INSERT INTO documents (node_id, ocr, ocr_status) VALUES (?, ?, ?)",
359-
noHyphenID,
360-
false,
361-
constants.UNKNOWN,
362-
)
363-
if err != nil {
364-
return fmt.Errorf("insert document %s: %v", n.Title, err)
365-
}
366-
367-
for _, docVer := range n.Versions {
368-
err = InsertDocumentVersion(
369-
db, n, docVer,
370-
)
371-
if err != nil {
372-
return fmt.Errorf(
373-
"insert document %q, documentID %q, parentID %q, userID %q failed: %v",
374-
n.Title,
375-
noHyphenID,
376-
noHyphenParentID,
377-
noHyphenUserID,
378-
err,
379-
)
380-
}
381-
}
382-
383-
// Commit the transaction
384-
err = tx.Commit()
385-
if err != nil {
386-
return fmt.Errorf("commit transaction for %s: %v", n.Title, err)
387-
}
388-
return nil
389-
}
390-
391-
func InsertFolder(
392-
db *sql.DB,
393-
n *models.Node,
394-
parentID uuid.UUID,
395-
userID uuid.UUID,
396-
) error {
397-
398-
tx, err := db.Begin()
399-
if err != nil {
400-
return err
401-
}
402-
403-
// Defer a rollback in case of failure
404-
defer func() {
405-
if err != nil {
406-
tx.Rollback()
407-
}
408-
}()
409-
410-
noHyphenParentID := strings.ReplaceAll(parentID.String(), "-", "")
411-
noHyphenID := strings.ReplaceAll(n.ID.String(), "-", "")
412-
noHyphenUserID := strings.ReplaceAll(userID.String(), "-", "")
413-
414-
currentTime := time.Now().Format("2006-01-02 15:04:05")
415-
416-
_, err = db.Exec(
417-
"INSERT INTO nodes (id, title, lang, ctype, user_id, parent_id, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)",
418-
noHyphenID,
419-
n.Title,
420-
constants.ENG,
421-
constants.FOLDER,
422-
noHyphenUserID,
423-
noHyphenParentID,
424-
currentTime,
425-
currentTime,
426-
)
427-
if err != nil {
428-
return fmt.Errorf(
429-
"insert node %q, parentID %q, userID %q: %v",
430-
n.Title,
431-
noHyphenParentID,
432-
noHyphenUserID,
433-
err,
434-
)
435-
}
436-
_, err = db.Exec(
437-
"INSERT INTO folders (node_id) VALUES (?)",
438-
noHyphenID,
439-
)
440-
if err != nil {
441-
return fmt.Errorf("insert folder %s: %v", n.Title, err)
442-
}
443-
444-
// Commit the transaction
445-
err = tx.Commit()
446-
if err != nil {
447-
return fmt.Errorf("commit transaction for %s: %v", n.Title, err)
448-
}
449-
return nil
450-
}
451-
452-
func CreateTargetNode(db *sql.DB, userID uuid.UUID, rootID uuid.UUID, source *models.Node) {
453-
454-
}

database/app_v3_2/postgres/open.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package postgres_app_v3_3
1+
package postgres_app_v3_2
22

33
import (
44
"database/sql"

database/app_v3_2/sqlite/document_versions.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package sqlite_app_v3_3
1+
package sqlite_app_v3_2
22

33
import (
44
"database/sql"
@@ -16,7 +16,7 @@ func GetDocumentVersionsForNode(
1616
) ([]models.DocumentVersionPageRow, error) {
1717
query := `
1818
SELECT
19-
d.node_id AS DocumentID,
19+
d.basetreenode_ptr_id AS DocumentID,
2020
dv.id AS DocumentVersionID,
2121
dv.number AS DocumentVersionNumber,
2222
dv.text AS DocumentText,
@@ -26,10 +26,10 @@ func GetDocumentVersionsForNode(
2626
p.id AS PageID,
2727
p.number AS PageNumber,
2828
p.text AS PageText
29-
FROM document_versions dv
30-
JOIN pages p ON p.document_version_id = dv.id
31-
JOIN documents d ON d.node_id = dv.document_id
32-
WHERE d.node_id = ?
29+
FROM core_documentversion dv
30+
JOIN core_page p ON p.document_version_id = dv.id
31+
JOIN core_document d ON d.basetreenode_ptr_id = dv.document_id
32+
WHERE d.basetreenode_ptr_id = ?
3333
`
3434
node_uuid := utils.UUID2STR(node_id)
3535

0 commit comments

Comments
 (0)