Skip to content

Commit 75129bd

Browse files
committed
[WIP] Add sharing rule and duplication rule.
1 parent 198d3de commit 75129bd

File tree

3 files changed

+76
-45
lines changed

3 files changed

+76
-45
lines changed

pkg/driver/convert.go

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -291,12 +291,12 @@ func ConvertSchema(config *CfDriverConfig, sfMeta SalesforceMeta) (*Schema, erro
291291
ReferencedTable: "",
292292
Columns: nil,
293293
ReferencedColumns: nil,
294-
Comment: ruleMeta.Label + "; " + ruleMeta.Description,
294+
Comment: ruleMeta.Label,
295+
}
296+
constraint.Def += "From: " + "; To: "
297+
if len(ruleMeta.Description) > 0 {
298+
constraint.Comment += "; " + ruleMeta.Description
295299
}
296-
// if !ruleMeta.Active {
297-
// constraint.Def = "[Inactive] "
298-
// }
299-
// constraint.Def += ruleMeta.UserCriteria + "; " + ruleMeta.RecordFilter
300300
table.Constraints = append(table.Constraints, constraint)
301301
}
302302
for _, ruleMeta := range rules.SharingGuestRules {
@@ -308,12 +308,12 @@ func ConvertSchema(config *CfDriverConfig, sfMeta SalesforceMeta) (*Schema, erro
308308
ReferencedTable: "",
309309
Columns: nil,
310310
ReferencedColumns: nil,
311-
Comment: ruleMeta.Label + "; " + ruleMeta.Description,
311+
Comment: ruleMeta.Label,
312+
}
313+
constraint.Def += "From: " + "; To: "
314+
if len(ruleMeta.Description) > 0 {
315+
constraint.Comment += "; " + ruleMeta.Description
312316
}
313-
// if !ruleMeta.Active {
314-
// constraint.Def = "[Inactive] "
315-
// }
316-
// constraint.Def += ruleMeta.UserCriteria + "; " + ruleMeta.RecordFilter
317317
table.Constraints = append(table.Constraints, constraint)
318318
}
319319
for _, ruleMeta := range rules.SharingOwnerRules {
@@ -325,12 +325,12 @@ func ConvertSchema(config *CfDriverConfig, sfMeta SalesforceMeta) (*Schema, erro
325325
ReferencedTable: "",
326326
Columns: nil,
327327
ReferencedColumns: nil,
328-
Comment: ruleMeta.Label + "; " + ruleMeta.Description,
328+
Comment: ruleMeta.Label,
329+
}
330+
constraint.Def += "From: " + "; To: "
331+
if len(ruleMeta.Description) > 0 {
332+
constraint.Comment += "; " + ruleMeta.Description
329333
}
330-
// if !ruleMeta.Active {
331-
// constraint.Def = "[Inactive] "
332-
// }
333-
// constraint.Def += ruleMeta.UserCriteria + "; " + ruleMeta.RecordFilter
334334
table.Constraints = append(table.Constraints, constraint)
335335
}
336336
for _, ruleMeta := range rules.SharingTerritoryRules {
@@ -342,12 +342,12 @@ func ConvertSchema(config *CfDriverConfig, sfMeta SalesforceMeta) (*Schema, erro
342342
ReferencedTable: "",
343343
Columns: nil,
344344
ReferencedColumns: nil,
345-
Comment: ruleMeta.Label + "; " + ruleMeta.Description,
345+
Comment: ruleMeta.Label,
346+
}
347+
constraint.Def += "From: " + "; To: "
348+
if len(ruleMeta.Description) > 0 {
349+
constraint.Comment += "; " + ruleMeta.Description
346350
}
347-
// if !ruleMeta.Active {
348-
// constraint.Def = "[Inactive] "
349-
// }
350-
// constraint.Def += ruleMeta.UserCriteria + "; " + ruleMeta.RecordFilter
351351
table.Constraints = append(table.Constraints, constraint)
352352
}
353353
}
@@ -365,9 +365,9 @@ func ConvertSchema(config *CfDriverConfig, sfMeta SalesforceMeta) (*Schema, erro
365365
ReferencedColumns: nil,
366366
Comment: ruleMeta.Description,
367367
}
368-
// if !ruleMeta.Active {
369-
// constraint.Def = "[Inactive] "
370-
// }
368+
if !ruleMeta.IsActive {
369+
constraint.Def = "[Inactive] "
370+
}
371371
// constraint.Def += ruleMeta.UserCriteria + "; " + ruleMeta.RecordFilter
372372
table.Constraints = append(table.Constraints, constraint)
373373
}

pkg/driver/read.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -193,8 +193,8 @@ func readSharingRulesMeta(baseDir string) (map[string]*SfSharingRules, error) {
193193
return ruleMap, nil
194194
}
195195

196-
func readDuplicateRulesMeta(baseDir string) (map[string]*DuplicateRule, error) {
197-
ruleMap := make(map[string]*DuplicateRule)
196+
func readDuplicateRulesMeta(baseDir string) (map[string]*SfDuplicateRule, error) {
197+
ruleMap := make(map[string]*SfDuplicateRule)
198198

199199
rulesDir, err := filepath.Abs(filepath.Join(baseDir, "force-app", "main", "default", "duplicateRules"))
200200
if err != nil {
@@ -223,7 +223,7 @@ func readDuplicateRulesMeta(baseDir string) (map[string]*DuplicateRule, error) {
223223
}
224224
defer frule.Close()
225225

226-
var ruleMeta DuplicateRule
226+
var ruleMeta SfDuplicateRule
227227
ruleDec := xml.NewDecoder(frule)
228228
err = ruleDec.Decode(&ruleMeta)
229229
if err != nil {
@@ -236,8 +236,8 @@ func readDuplicateRulesMeta(baseDir string) (map[string]*DuplicateRule, error) {
236236
return ruleMap, nil
237237
}
238238

239-
func readMatchingRulesMeta(baseDir string) (map[string]*MatchingRules, error) {
240-
ruleMap := make(map[string]*MatchingRules)
239+
func readMatchingRulesMeta(baseDir string) (map[string]*SfMatchingRules, error) {
240+
ruleMap := make(map[string]*SfMatchingRules)
241241

242242
rulesDir, err := filepath.Abs(filepath.Join(baseDir, "force-app", "main", "default", "matchingRules"))
243243
if err != nil {
@@ -266,7 +266,7 @@ func readMatchingRulesMeta(baseDir string) (map[string]*MatchingRules, error) {
266266
}
267267
defer frule.Close()
268268

269-
var ruleMeta MatchingRules
269+
var ruleMeta SfMatchingRules
270270
ruleDec := xml.NewDecoder(frule)
271271
err = ruleDec.Decode(&ruleMeta)
272272
if err != nil {

pkg/driver/typessf.go

Lines changed: 47 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -163,46 +163,77 @@ type SfSharingRules struct {
163163
}
164164

165165
type SfSharingBaseRule struct {
166-
FullName string `xml:"fullName"`
167-
AccessLevel string `xml:"accessLevel"`
168-
Label string `xml:"label"`
169-
Description string `xml:"description"`
170-
SharedTo SfSharedTo `xml:"sharedTo"`
166+
FullName string `xml:"fullName"`
167+
Label string `xml:"label"`
168+
AccessLevel string `xml:"accessLevel"`
169+
Description string `xml:"description"`
170+
SharedTo SfSharedTo `xml:"sharedTo"`
171+
AccountSettings []SfAccountSharingRuleSettings `xml:"accountSettings"`
171172
}
172173

173174
type SfSharingCriteriaRule struct {
174175
SfSharingBaseRule
176+
BooleanFilter string `xml:"booleanFilter"`
177+
CriteriaItems []SfFilterItem `xml:"criteriaItems"`
178+
IncludeRecordsOwnedByAll bool `xml:"includeRecordsOwnedByAll"`
175179
}
176180

177181
type SfSharingGuestRules struct {
178182
SfSharingBaseRule
183+
BooleanFilter string `xml:"booleanFilter"`
184+
CriteriaItems []SfFilterItem `xml:"criteriaItems"`
185+
IncludeHVUOwnedRecords bool `xml:"includeHVUOwnedRecords"`
179186
}
180187

181188
type SfSharingOwnerRules struct {
182189
SfSharingBaseRule
190+
SharedFrom SfSharedTo `xml:"sharedFrom"`
183191
}
184192

185193
type SfSharingTerritoryRules struct {
186-
SfSharingBaseRule
194+
SfSharingOwnerRules
187195
}
188196

189197
type SfSharedTo struct {
190-
AllCustomerPortalUsers *struct{} `xml:"allCustomerPortalUsers"`
191-
AllInternalUsers *struct{} `xml:"allInternalUsers"`
192-
AllPartnerUsers *struct{} `xml:"allPartnerUsers"`
193-
ChannelProgramGroup *struct{} `xml:"channelProgramGroup"`
194-
Group []string `xml:"group"`
195-
GuestUser []string `xml:"guestUser"`
198+
AllCustomerPortalUsers *struct{} `xml:"allCustomerPortalUsers"`
199+
AllInternalUsers *struct{} `xml:"allInternalUsers"`
200+
AllPartnerUsers *struct{} `xml:"allPartnerUsers"`
201+
ChannelProgramGroup *struct{} `xml:"channelProgramGroup"`
202+
Group []string `xml:"group"`
203+
GuestUser []string `xml:"guestUser"`
204+
ManagerSubordinates []string `xml:"managerSubordinates"`
205+
Managers []string `xml:"managers"`
206+
PortalRole []string `xml:"portalRole"`
207+
PortalRoleAndSubordinates []string `xml:"portalRoleAndSubordinates"`
208+
Role []string `xml:"role"`
209+
RoleAndSubordinates []string `xml:"roleAndSubordinates"`
210+
RoleAndSubordinatesInternal []string `xml:"roleAndSubordinatesInternal"`
211+
Territory []string `xml:"territory"`
212+
TerritoryAndSubordinates []string `xml:"territoryAndSubordinates"`
213+
Queue []string `xml:"queue"`
214+
}
215+
216+
type SfAccountSharingRuleSettings struct {
217+
CaseAccessLevel string `xml:"caseAccessLevel"`
218+
ContactAccessLevel string `xml:"contactAccessLevel"`
219+
OpportunityAccessLevel string `xml:"opportunityAccessLevel"`
220+
}
221+
222+
type SfFilterItem struct {
223+
Field string `xml:"field"`
224+
Operation string `xml:"operation"`
225+
Value string `xml:"value"`
226+
ValueField string `xml:"valueField"`
196227
}
197228

198-
type DuplicateRule struct {
229+
type SfDuplicateRule struct {
199230
XMLName xml.Name `xml:"DuplicateRule"`
200231
IsActive bool `xml:"isActive"`
201232
MasterLabel string `xml:"masterLabel"`
202233
Description string `xml:"description"`
203234
}
204235

205-
type MatchingRules struct {
236+
type SfMatchingRules struct {
206237
XMLName xml.Name `xml:"MatchingRules"`
207238
}
208239

@@ -235,8 +266,8 @@ type SalesforceMeta struct {
235266
GlobalValueSets map[string]*SfGlobalValueSet
236267
RestrictionRules map[string]*SfRestrictionRule
237268
SharingRules map[string]*SfSharingRules
238-
DuplicateRules map[string]*DuplicateRule
239-
MatchingRules map[string]*MatchingRules
269+
DuplicateRules map[string]*SfDuplicateRule
270+
MatchingRules map[string]*SfMatchingRules
240271
Flows map[string]*SfFlow
241272
ApexTriggers map[string]*SfApexTriggerCode
242273
SObjects map[string]*SfCustomObject

0 commit comments

Comments
 (0)