|
1 |
| -package postgres_app_v3_3 |
| 1 | +package postgres_app_v3_2 |
2 | 2 |
|
3 | 3 | import (
|
4 | 4 | "database/sql"
|
5 | 5 | "fmt"
|
6 | 6 | "os"
|
7 |
| - "strings" |
8 |
| - "time" |
9 | 7 |
|
10 |
| - "github.com/google/uuid" |
11 |
| - "github.com/papermerge/pmdump/constants" |
12 | 8 | models "github.com/papermerge/pmdump/models/app_v3_3"
|
13 | 9 | )
|
14 | 10 |
|
@@ -191,264 +187,3 @@ func GetUserNodes(db *sql.DB, u *interface{}) error {
|
191 | 187 |
|
192 | 188 | return nil
|
193 | 189 | }
|
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 |
| -} |
0 commit comments