@@ -2,8 +2,8 @@ package main
22
33import (
44 "flag"
5- "fmt"
65 "os"
6+ "strings"
77
88 "github.com/corvofeng/go-flarum/model"
99 "github.com/corvofeng/go-flarum/system"
@@ -13,6 +13,8 @@ import (
1313func main () {
1414 configFile := flag .String ("config" , "./config/config.yaml" , "full path of config.yaml file" )
1515 logLevel := flag .String ("lvl" , "INFO" , "DEBUG LEVEL" )
16+ export := flag .String ("export" , "" , "export data to file, e.g. export=article,comment,user" )
17+ importer := flag .String ("import" , "" , "import data to file, e.g. impoert=article,comment,user" )
1618
1719 flag .Parse ()
1820 util .InitLogger (* logLevel )
@@ -32,14 +34,76 @@ func main() {
3234
3335 article , _ := model .SQLArticleGetByID (app .GormDB , app .RedisDB , 4 )
3436 article .CleanCache ()
35- fmt .Println (article .GetCommentIDList (app .RedisDB ))
3637 // cmt, _ := model.SQLCommentByID(app.GormDB, , app.RedisDB, 158, 1)
3738 // pageInfo := model.SQLCommentListByTopic(
3839 // app.GormDB, app.RedisDB, article.ID, 100, app.Cf.Site.TimeZone)
3940 // for _, c := range pageInfo.Items {
4041 // fmt.Println(c.ID, c.CreatedAt.UTC().String())
4142 // }
4243
44+ for _ , e := range strings .Split (* export , "," ) {
45+ switch e {
46+ case "article" :
47+ if err := model .ExportArticles (app .GormDB , "./export/articles.json" ); err != nil {
48+ logger .Error ("Export articles failed:" , err )
49+ } else {
50+ logger .Info ("Export articles successfully" )
51+ }
52+ case "comment" :
53+ if err := model .ExportComments (app .GormDB , "./export/comments.json" ); err != nil {
54+ logger .Error ("Export comments failed:" , err )
55+ } else {
56+ logger .Info ("Export comments successfully" )
57+ }
58+ case "user" :
59+ if err := model .ExportUsers (app .GormDB , "./export/users.json" ); err != nil {
60+ logger .Error ("Export users failed:" , err )
61+ } else {
62+ logger .Info ("Export users successfully" )
63+ }
64+ case "tag" :
65+ if err := model .ExportTags (app .GormDB , "./export/tags.json" ); err != nil {
66+ logger .Error ("Export tags failed:" , err )
67+ } else {
68+ logger .Info ("Export tags successfully" )
69+ }
70+ default :
71+ logger .Warningf ("Unknown export type: %s" , e )
72+ }
73+ }
74+
75+ for _ , i := range strings .Split (* importer , "," ) {
76+ switch i {
77+ case "article" :
78+ if err := model .ImportArticles (app .GormDB , "./export/articles.json" ); err != nil {
79+ logger .Error ("Import articles failed:" , err )
80+ } else {
81+ logger .Info ("Import articles successfully" )
82+ }
83+ case "comment" :
84+ if err := model .ImportComments (app .GormDB , "./export/comments.json" ); err != nil {
85+ logger .Error ("Import comments failed:" , err )
86+ } else {
87+ logger .Info ("Import comments successfully" )
88+ }
89+ case "user" :
90+ if err := model .ImportUsers (app .GormDB , "./export/users.json" ); err != nil {
91+ logger .Error ("Import users failed:" , err )
92+ } else {
93+ logger .Info ("Import users successfully" )
94+ }
95+ case "tag" :
96+ if err := model .ImportTags (app .GormDB , "./export/tags.json" ); err != nil {
97+ logger .Error ("Import tags failed:" , err )
98+ } else {
99+ logger .Info ("Import tags successfully" )
100+ }
101+
102+ default :
103+ logger .Warningf ("Unknown import type: %s" , i )
104+ }
105+ }
106+
43107 // 调试tags
44108 // fmt.Println(model.SQLGetTags(app.GormDB))
45109 // fmt.Println(model.SQLGetTagByUrlName(app.GormDB, "r_funny"))
0 commit comments