clone strings to lose references to in mem stores

This commit is contained in:
Abhishek Pandey 2023-11-29 21:49:18 -08:00
parent 178ae0d465
commit 05dee79560

View File

@ -1,6 +1,7 @@
package drive package drive
import ( import (
"strings"
"time" "time"
"github.com/alcionai/corso/src/internal/common/ptr" "github.com/alcionai/corso/src/internal/common/ptr"
@ -26,8 +27,6 @@ type CorsoDriveItemable interface {
GetMalware() malwareable GetMalware() malwareable
GetDeleted() deletedable GetDeleted() deletedable
GetRoot() itemRootable GetRoot() itemRootable
// Not used anywhere
//GetSharepointIds() sharepointIdsable
} }
type fileDriveItemable interface { type fileDriveItemable interface {
@ -208,15 +207,11 @@ func (c *CorsoDriveItem) GetRoot() itemRootable {
return c.Root return c.Root
} }
// func (c *CorsoDriveItem) GetSharepointIds() sharepointIdsable {
// return nil
// }
// models.DriveItemable to CorsoDriveItemable // models.DriveItemable to CorsoDriveItemable
func ToCorsoDriveItemable(item models.DriveItemable) CorsoDriveItemable { func ToCorsoDriveItemable(item models.DriveItemable) CorsoDriveItemable {
cdi := &CorsoDriveItem{ cdi := &CorsoDriveItem{
ID: ptr.Val(item.GetId()), ID: strings.Clone(ptr.Val(item.GetId())),
Name: ptr.Val(item.GetName()), Name: strings.Clone(ptr.Val(item.GetName())),
Size: ptr.Val(item.GetSize()), Size: ptr.Val(item.GetSize()),
CreatedDateTime: ptr.Val(item.GetCreatedDateTime()), CreatedDateTime: ptr.Val(item.GetCreatedDateTime()),
LastModifiedDateTime: ptr.Val(item.GetLastModifiedDateTime()), LastModifiedDateTime: ptr.Val(item.GetLastModifiedDateTime()),
@ -229,7 +224,7 @@ func ToCorsoDriveItemable(item models.DriveItemable) CorsoDriveItemable {
ad := make(map[string]interface{}) ad := make(map[string]interface{})
for _, key := range downloadURLKeys { for _, key := range downloadURLKeys {
if v, err := str.AnyValueToString(key, item.GetAdditionalData()); err == nil { if v, err := str.AnyValueToString(key, item.GetAdditionalData()); err == nil {
ad[key] = v ad[key] = strings.Clone(v)
break break
} }
} }
@ -246,7 +241,7 @@ func ToCorsoDriveItemable(item models.DriveItemable) CorsoDriveItemable {
if item.GetFile() != nil { if item.GetFile() != nil {
cdi.File = &fileDriveItem{ cdi.File = &fileDriveItem{
isFile: true, isFile: true,
mimeType: ptr.Val(item.GetFile().GetMimeType()), mimeType: strings.Clone(ptr.Val(item.GetFile().GetMimeType())),
} }
} }
@ -258,10 +253,10 @@ func ToCorsoDriveItemable(item models.DriveItemable) CorsoDriveItemable {
if item.GetParentReference() != nil { if item.GetParentReference() != nil {
cdi.ParentReference = &parentReference{ cdi.ParentReference = &parentReference{
id: ptr.Val(item.GetParentReference().GetId()), id: strings.Clone(ptr.Val(item.GetParentReference().GetId())),
path: ptr.Val(item.GetParentReference().GetPath()), path: strings.Clone(ptr.Val(item.GetParentReference().GetPath())),
name: ptr.Val(item.GetParentReference().GetName()), name: strings.Clone(ptr.Val(item.GetParentReference().GetName())),
driveId: ptr.Val(item.GetParentReference().GetDriveId()), driveId: strings.Clone(ptr.Val(item.GetParentReference().GetDriveId())),
} }
} }
@ -296,10 +291,10 @@ func ToCorsoDriveItemable(item models.DriveItemable) CorsoDriveItemable {
ed, ok := additionalData["email"] ed, ok := additionalData["email"]
if ok { if ok {
str = ptr.Val(ed.(*string)) str = strings.Clone(ptr.Val(ed.(*string)))
ad["email"] = &str ad["email"] = &str
} else if ed, ok = additionalData["displayName"]; ok { } else if ed, ok = additionalData["displayName"]; ok {
str = ptr.Val(ed.(*string)) str = strings.Clone(ptr.Val(ed.(*string)))
ad["displayName"] = &str ad["displayName"] = &str
} }