MCPcopy Create free account
hub / github.com/gogs/gogs / DumpDatabase

Function DumpDatabase

internal/database/backup.go:34–73  ·  view source on GitHub ↗

DumpDatabase dumps all data from database to file system in JSON Lines format.

(ctx context.Context, db *gorm.DB, dirPath string, verbose bool)

Source from the content-addressed store, hash-verified

32
33// DumpDatabase dumps all data from database to file system in JSON Lines format.
34func DumpDatabase(ctx context.Context, db *gorm.DB, dirPath string, verbose bool) error {
35 err := os.MkdirAll(dirPath, os.ModePerm)
36 if err != nil {
37 return err
38 }
39
40 err = dumpLegacyTables(ctx, dirPath, verbose)
41 if err != nil {
42 return errors.Wrap(err, "dump legacy tables")
43 }
44
45 for _, table := range Tables {
46 select {
47 case <-ctx.Done():
48 return ctx.Err()
49 default:
50 }
51
52 tableName := getTableType(table)
53 if verbose {
54 log.Trace("Dumping table %q...", tableName)
55 }
56
57 err := func() error {
58 tableFile := filepath.Join(dirPath, tableName+".json")
59 f, err := os.Create(tableFile)
60 if err != nil {
61 return errors.Wrap(err, "create table file")
62 }
63 defer func() { _ = f.Close() }()
64
65 return dumpTable(ctx, db, table, f)
66 }()
67 if err != nil {
68 return errors.Wrapf(err, "dump table %q", tableName)
69 }
70 }
71
72 return nil
73}
74
75func dumpTable(ctx context.Context, db *gorm.DB, table any, w io.Writer) error {
76 query := db.WithContext(ctx).Model(table)

Callers 1

runBackupFunction · 0.92

Calls 4

dumpLegacyTablesFunction · 0.85
getTableTypeFunction · 0.85
dumpTableFunction · 0.85
CreateMethod · 0.45

Tested by

no test coverage detected