@@ -10,6 +10,7 @@ import (
10
10
"github.com/Dobefu/csb/cmd/cs_sdk"
11
11
"github.com/Dobefu/csb/cmd/cs_sdk/structs"
12
12
"github.com/Dobefu/csb/cmd/cs_sdk/utils"
13
+ "github.com/Dobefu/csb/cmd/database/assets"
13
14
"github.com/Dobefu/csb/cmd/database/query"
14
15
db_routes "github.com/Dobefu/csb/cmd/database/routes"
15
16
"github.com/Dobefu/csb/cmd/database/state"
@@ -51,6 +52,12 @@ func Sync(reset bool) error {
51
52
return err
52
53
}
53
54
55
+ err = addAllAssets (data )
56
+
57
+ if err != nil {
58
+ return err
59
+ }
60
+
54
61
var hasPaginationToken bool
55
62
56
63
paginationToken , hasPaginationToken = data ["pagination_token" ].(string )
@@ -86,6 +93,60 @@ func getNewSyncToken(data map[string]interface{}) (string, error) {
86
93
return newSyncToken , nil
87
94
}
88
95
96
+ func addAllAssets (data map [string ]interface {}) error {
97
+ items , hasItems := data ["items" ].([]interface {})
98
+
99
+ if ! hasItems {
100
+ return errors .New ("sync data has no items" )
101
+ }
102
+
103
+ itemCount := len (items )
104
+
105
+ for idx , item := range items {
106
+ logger .Info ("Fetching item data (%d/%d)" , (idx + 1 ), itemCount )
107
+
108
+ item := item .(map [string ]interface {})
109
+
110
+ if item ["content_type_uid" ].(string ) != "sys_assets" {
111
+ continue
112
+ }
113
+
114
+ fmt .Println (item )
115
+ assetData := item ["data" ].(map [string ]interface {})
116
+
117
+ publishDetails , hasPublishDetails := assetData ["publish_details" ].(map [string ]interface {})
118
+
119
+ if ! hasPublishDetails {
120
+ publishDetails = map [string ]interface {}{
121
+ "locale" : "" ,
122
+ }
123
+ }
124
+
125
+ parentUid , hasParentUid := assetData ["parent_uid" ].(string )
126
+
127
+ if ! hasParentUid {
128
+ parentUid = ""
129
+ }
130
+ fmt .Println (assetData )
131
+ err := assets .SetAsset (structs.Route {
132
+ Uid : assetData ["uid" ].(string ),
133
+ Title : assetData ["title" ].(string ),
134
+ ContentType : assetData ["content_type" ].(string ),
135
+ Locale : publishDetails ["locale" ].(string ),
136
+ Url : assetData ["url" ].(string ),
137
+ Parent : parentUid ,
138
+ UpdatedAt : getUpdatedAt (assetData ),
139
+ Published : item ["type" ].(string ) == "asset_published" ,
140
+ })
141
+
142
+ if err != nil {
143
+ return err
144
+ }
145
+ }
146
+
147
+ return nil
148
+ }
149
+
89
150
func addAllRoutes (data map [string ]interface {}, routes * map [string ]structs.Route ) error {
90
151
err := addSyncRoutes (data , routes )
91
152
@@ -124,7 +185,7 @@ func getSyncData(paginationToken string, reset bool, syncToken string) (map[stri
124
185
data , err = cs_sdk .Request (path , "GET" , nil , false )
125
186
} else if err != nil || reset {
126
187
logger .Info ("Initialising a fresh sync" )
127
- path := "stacks/sync?init=true&type=entry_published,entry_unpublished,entry_deleted"
188
+ path := "stacks/sync?init=true&type=entry_published,entry_unpublished,entry_deleted,asset_published,asset_unpublished,asset_deleted "
128
189
data , err = cs_sdk .Request (path , "GET" , nil , false )
129
190
} else {
130
191
logger .Info ("Syncing data using an existing sync token" )
@@ -152,6 +213,11 @@ func addSyncRoutes(data map[string]interface{}, routes *map[string]structs.Route
152
213
logger .Info ("Fetching item data (%d/%d)" , (idx + 1 ), itemCount )
153
214
154
215
item := item .(map [string ]interface {})
216
+
217
+ if item ["content_type_uid" ].(string ) == "sys_assets" {
218
+ continue
219
+ }
220
+
155
221
data := item ["data" ].(map [string ]interface {})
156
222
157
223
publishDetails , hasPublishDetails := data ["publish_details" ].(map [string ]interface {})
0 commit comments