Skip to content
This repository was archived by the owner on Aug 30, 2025. It is now read-only.

Commit a40c5ef

Browse files
authored
NEOS-1789: adds Scramble Identity Transformer (#3405)
1 parent fb6e598 commit a40c5ef

File tree

58 files changed

+3227
-1329
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+3227
-1329
lines changed

.mockery.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,3 +145,9 @@ packages:
145145
github.com/nucleuscloud/neosync/worker/pkg/workflows/ee/piidetect/workflows/table/activities:
146146
interfaces:
147147
OpenAiCompletionsClient:
148+
github.com/nucleuscloud/neosync/worker/pkg/workflows/tablesync/shared:
149+
interfaces:
150+
BlockAllocator:
151+
github.com/nucleuscloud/neosync/worker/pkg/rng:
152+
interfaces:
153+
Rand:

backend/gen/go/protos/mgmt/v1alpha1/transformer.pb.go

Lines changed: 1043 additions & 971 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

backend/gen/go/protos/mgmt/v1alpha1/transformer.pb.json.go

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

backend/pkg/integration-test/integration-test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,14 @@ import (
2727
"go.temporal.io/api/enums/v1"
2828
"go.temporal.io/api/workflow/v1"
2929
"go.temporal.io/api/workflowservice/v1"
30+
tmprl_mocks "go.temporal.io/sdk/mocks"
3031
"google.golang.org/protobuf/types/known/timestamppb"
3132
)
3233

3334
type Mocks struct {
3435
TemporalClientManager *clientmanager.MockInterface
3536
TemporalConfigProvider *clientmanager.MockConfigProvider
37+
TemporalClient *tmprl_mocks.Client
3638
Authclient *auth_client.MockInterface
3739
Authmanagerclient *authmgmt.MockInterface
3840
Prometheusclient *promapiv1mock.MockAPI
@@ -105,6 +107,7 @@ func (s *NeosyncApiTestClient) Setup(ctx context.Context, t testing.TB) error {
105107
s.Mocks = &Mocks{
106108
TemporalClientManager: clientmanager.NewMockInterface(t),
107109
TemporalConfigProvider: clientmanager.NewMockConfigProvider(t),
110+
TemporalClient: tmprl_mocks.NewClient(t),
108111
Authclient: auth_client.NewMockInterface(t),
109112
Authmanagerclient: authmgmt.NewMockInterface(t),
110113
Prometheusclient: promapiv1mock.NewMockAPI(t),

backend/protos/mgmt/v1alpha1/transformer.proto

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@ enum TransformerSource {
168168
TRANSFORMER_SOURCE_GENERATE_BUSINESS_NAME = 48;
169169
TRANSFORMER_SOURCE_GENERATE_IP_ADDRESS = 49;
170170
TRANSFORMER_SOURCE_TRANSFORM_UUID = 50;
171+
TRANSFORMER_SOURCE_TRANSFORM_SCRAMBLE_IDENTITY = 51;
171172
}
172173

173174
enum TransformerDataType {
@@ -261,9 +262,15 @@ message TransformerConfig {
261262
GenerateBusinessName generate_business_name_config = 45;
262263
GenerateIpAddress generate_ip_address_config = 46;
263264
TransformUuid transform_uuid_config = 47;
265+
// Scrambles an integer while keeping it unique.
266+
TransformScrambleIdentity transform_scramble_identity_config = 48;
264267
}
265268
}
266269

270+
// Takes an input integer and scrambles it, effectively outputing another integer that is not the same as the input.
271+
// This is effectively a random integer generator that has unique properties.
272+
message TransformScrambleIdentity {}
273+
267274
// NeosyncCloud/Enterprise only transformer for anonymizing PII Text
268275
message TransformPiiText {
269276
// Minimal detection score for determining PII. 0.0-1.0

backend/services/mgmt/v1alpha1/transformers-service/system_transformers.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -669,6 +669,19 @@ var (
669669
},
670670
},
671671
},
672+
{
673+
Name: "Scramble Identity",
674+
Description: "Scrambles an integer while keeping it unique.",
675+
DataType: mgmtv1alpha1.TransformerDataType_TRANSFORMER_DATA_TYPE_INT64,
676+
DataTypes: []mgmtv1alpha1.TransformerDataType{mgmtv1alpha1.TransformerDataType_TRANSFORMER_DATA_TYPE_INT64, mgmtv1alpha1.TransformerDataType_TRANSFORMER_DATA_TYPE_NULL},
677+
SupportedJobTypes: []mgmtv1alpha1.SupportedJobType{mgmtv1alpha1.SupportedJobType_SUPPORTED_JOB_TYPE_SYNC},
678+
Source: mgmtv1alpha1.TransformerSource_TRANSFORMER_SOURCE_TRANSFORM_SCRAMBLE_IDENTITY,
679+
Config: &mgmtv1alpha1.TransformerConfig{
680+
Config: &mgmtv1alpha1.TransformerConfig_TransformScrambleIdentityConfig{
681+
TransformScrambleIdentityConfig: &mgmtv1alpha1.TransformScrambleIdentity{},
682+
},
683+
},
684+
},
672685
}
673686

674687
// base transformers + ee transformers

backend/sql/postgresql/models/transformers.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,11 @@ type TransformerConfig struct {
5555
GenerateBusinessName *GenerateBusinessNameConfig `json:"generateBusinessNameConfig,omitempty"`
5656
GenerateIpAddress *GenerateIpAddressConfig `json:"generateIpAddressConfig,omitempty"`
5757
TransformUuid *TransformUuidConfig `json:"transformUuid,omitempty"`
58+
TransformScrambleIdentity *TransformScrambleIdentityConfig `json:"transformScrambleIdentity,omitempty"`
5859
}
5960

61+
type TransformScrambleIdentityConfig struct{}
62+
6063
type GenerateEmailConfig struct {
6164
EmailType *int32 `json:"emailType,omitempty"`
6265
}
@@ -393,6 +396,8 @@ func (t *TransformerConfig) FromTransformerConfigDto(tr *mgmtv1alpha1.Transforme
393396
}
394397
case *mgmtv1alpha1.TransformerConfig_TransformUuidConfig:
395398
t.TransformUuid = &TransformUuidConfig{}
399+
case *mgmtv1alpha1.TransformerConfig_TransformScrambleIdentityConfig:
400+
t.TransformScrambleIdentity = &TransformScrambleIdentityConfig{}
396401
default:
397402
t = &TransformerConfig{}
398403
}
@@ -753,6 +758,12 @@ func (t *TransformerConfig) ToTransformerConfigDto() *mgmtv1alpha1.TransformerCo
753758
TransformUuidConfig: &mgmtv1alpha1.TransformUuid{},
754759
},
755760
}
761+
case t.TransformScrambleIdentity != nil:
762+
return &mgmtv1alpha1.TransformerConfig{
763+
Config: &mgmtv1alpha1.TransformerConfig_TransformScrambleIdentityConfig{
764+
TransformScrambleIdentityConfig: &mgmtv1alpha1.TransformScrambleIdentity{},
765+
},
766+
}
756767
default:
757768
return &mgmtv1alpha1.TransformerConfig{}
758769
}

0 commit comments

Comments
 (0)