Skip to content

Commit 8faecd2

Browse files
author
Ilyas Gasanov
committed
[DOP-23976] Use PUT instead of PATCH for connections & transfers
1 parent 5c50952 commit 8faecd2

Some content is hidden

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

42 files changed

+370
-902
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Use PUT instead of PATCH for `Connection` and `Transfer` models

syncmaster/db/repositories/connection.py

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -89,21 +89,17 @@ async def create(
8989
async def update(
9090
self,
9191
connection_id: int,
92-
name: str | None,
93-
type: str | None,
94-
description: str | None,
92+
name: str,
93+
type: str,
94+
description: str,
9595
data: dict[str, Any],
9696
) -> Connection:
9797
try:
98-
connection = await self.read_by_id(connection_id=connection_id)
99-
for key in connection.data:
100-
data[key] = data.get(key, None) or connection.data[key]
101-
10298
return await self._update(
10399
Connection.id == connection_id,
104-
type=type or connection.type,
105-
name=name or connection.name,
106-
description=description or connection.description,
100+
type=type,
101+
name=name,
102+
description=description,
107103
data=data,
108104
)
109105
except IntegrityError as e:

syncmaster/db/repositories/credentials_repository.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,7 @@ async def update(
7171
connection_id: int,
7272
data: dict,
7373
) -> AuthData:
74-
creds = await self.read(connection_id)
7574
try:
76-
for key in creds:
77-
data[key] = data.get(key, None) or creds[key]
7875
return await self._update(
7976
AuthData.connection_id == connection_id,
8077
value=encrypt_auth_data(value=data, settings=self._settings),

syncmaster/db/repositories/transfer.py

Lines changed: 17 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -150,44 +150,35 @@ async def create(
150150

151151
async def update(
152152
self,
153-
transfer: Transfer,
154-
name: str | None,
155-
description: str | None,
156-
source_connection_id: int | None,
157-
target_connection_id: int | None,
153+
transfer_id: int,
154+
name: str,
155+
description: str,
156+
source_connection_id: int,
157+
target_connection_id: int,
158158
source_params: dict[str, Any],
159159
target_params: dict[str, Any],
160160
strategy_params: dict[str, Any],
161161
transformations: list[dict[str, Any]],
162162
resources: dict[str, Any],
163-
is_scheduled: bool | None,
163+
is_scheduled: bool,
164164
schedule: str | None,
165-
new_queue_id: int | None,
165+
queue_id: int,
166166
) -> Transfer:
167167
try:
168-
for old, new in [
169-
(transfer.source_params, source_params),
170-
(transfer.target_params, target_params),
171-
(transfer.strategy_params, strategy_params),
172-
]:
173-
for key in old:
174-
if key not in new or new[key] is None:
175-
new[key] = old[key]
176-
177168
return await self._update(
178-
Transfer.id == transfer.id,
179-
name=name or transfer.name,
180-
description=description or transfer.description,
169+
Transfer.id == transfer_id,
170+
name=name,
171+
description=description,
181172
strategy_params=strategy_params,
182-
is_scheduled=is_scheduled if is_scheduled is not None else transfer.is_scheduled,
183-
schedule=schedule or transfer.schedule,
184-
source_connection_id=source_connection_id or transfer.source_connection_id,
185-
target_connection_id=target_connection_id or transfer.target_connection_id,
173+
is_scheduled=is_scheduled,
174+
schedule=schedule or "",
175+
source_connection_id=source_connection_id,
176+
target_connection_id=target_connection_id,
186177
source_params=source_params,
187178
target_params=target_params,
188-
transformations=transformations or transfer.transformations,
189-
resources=resources or transfer.resources,
190-
queue_id=new_queue_id or transfer.queue_id,
179+
transformations=transformations,
180+
resources=resources,
181+
queue_id=queue_id,
191182
)
192183
except IntegrityError as e:
193184
self._raise_error(e)

syncmaster/schemas/v1/__init__.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
ConnectionPageSchema,
88
CreateConnectionSchema,
99
ReadConnectionSchema,
10-
UpdateConnectionSchema,
1110
)
1211
from syncmaster.schemas.v1.groups import (
1312
AddUserSchema,
@@ -28,7 +27,6 @@
2827
ReadFullTransferSchema,
2928
ReadTransferSchema,
3029
TransferPageSchema,
31-
UpdateTransferSchema,
3230
)
3331
from syncmaster.schemas.v1.transfers.db import (
3432
HiveReadTransferSourceAndTarget,

syncmaster/schemas/v1/auth/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
BasicAuthSchema,
55
CreateBasicAuthSchema,
66
ReadBasicAuthSchema,
7-
UpdateBasicAuthSchema,
87
)
98
from syncmaster.schemas.v1.auth.s3 import (
109
CreateS3AuthSchema,

syncmaster/schemas/v1/connections/clickhouse.py

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,11 @@
55
from syncmaster.schemas.v1.auth import (
66
CreateBasicAuthSchema,
77
ReadBasicAuthSchema,
8-
UpdateBasicAuthSchema,
98
)
109
from syncmaster.schemas.v1.connection_types import CLICKHOUSE_TYPE
1110
from syncmaster.schemas.v1.connections.connection_base import (
1211
CreateConnectionBaseSchema,
1312
ReadConnectionBaseSchema,
14-
UpdateConnectionBaseSchema,
1513
)
1614

1715

@@ -29,13 +27,6 @@ class ReadClickhouseConnectionDataSchema(BaseModel):
2927
additional_params: dict = Field(default_factory=dict)
3028

3129

32-
class UpdateClickhouseConnectionDataSchema(BaseModel):
33-
host: str | None = None
34-
port: int | None = None
35-
database_name: str | None = None
36-
additional_params: dict | None = Field(default_factory=dict)
37-
38-
3930
class CreateClickhouseConnectionSchema(CreateConnectionBaseSchema):
4031
type: CLICKHOUSE_TYPE = Field(..., description="Connection type")
4132
data: CreateClickhouseConnectionDataSchema = Field(
@@ -54,9 +45,3 @@ class ReadClickhouseConnectionSchema(ReadConnectionBaseSchema):
5445
type: CLICKHOUSE_TYPE
5546
data: ReadClickhouseConnectionDataSchema = Field(alias="connection_data")
5647
auth_data: ReadBasicAuthSchema | None = None
57-
58-
59-
class UpdateClickhouseConnectionSchema(UpdateConnectionBaseSchema):
60-
type: CLICKHOUSE_TYPE
61-
data: UpdateClickhouseConnectionDataSchema | None = Field(alias="connection_data", default=None)
62-
auth_data: UpdateBasicAuthSchema | None = None

syncmaster/schemas/v1/connections/connection.py

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -8,67 +8,54 @@
88
from syncmaster.schemas.v1.connections.clickhouse import (
99
CreateClickhouseConnectionSchema,
1010
ReadClickhouseConnectionSchema,
11-
UpdateClickhouseConnectionSchema,
1211
)
1312
from syncmaster.schemas.v1.connections.ftp import (
1413
CreateFTPConnectionSchema,
1514
ReadFTPConnectionSchema,
16-
UpdateFTPConnectionSchema,
1715
)
1816
from syncmaster.schemas.v1.connections.ftps import (
1917
CreateFTPSConnectionSchema,
2018
ReadFTPSConnectionSchema,
21-
UpdateFTPSConnectionSchema,
2219
)
2320
from syncmaster.schemas.v1.connections.hdfs import (
2421
CreateHDFSConnectionSchema,
2522
ReadHDFSConnectionSchema,
26-
UpdateHDFSConnectionSchema,
2723
)
2824
from syncmaster.schemas.v1.connections.hive import (
2925
CreateHiveConnectionSchema,
3026
ReadHiveConnectionSchema,
31-
UpdateHiveConnectionSchema,
3227
)
3328
from syncmaster.schemas.v1.connections.mssql import (
3429
CreateMSSQLConnectionSchema,
3530
ReadMSSQLConnectionSchema,
36-
UpdateMSSQLConnectionSchema,
3731
)
3832
from syncmaster.schemas.v1.connections.mysql import (
3933
CreateMySQLConnectionSchema,
4034
ReadMySQLConnectionSchema,
41-
UpdateMySQLConnectionSchema,
4235
)
4336
from syncmaster.schemas.v1.connections.oracle import (
4437
CreateOracleConnectionSchema,
4538
ReadOracleConnectionSchema,
46-
UpdateOracleConnectionSchema,
4739
)
4840
from syncmaster.schemas.v1.connections.postgres import (
4941
CreatePostgresConnectionSchema,
5042
ReadPostgresConnectionSchema,
51-
UpdatePostgresConnectionSchema,
5243
)
5344
from syncmaster.schemas.v1.connections.s3 import (
5445
CreateS3ConnectionSchema,
5546
ReadS3ConnectionSchema,
56-
UpdateS3ConnectionSchema,
5747
)
5848
from syncmaster.schemas.v1.connections.samba import (
5949
CreateSambaConnectionSchema,
6050
ReadSambaConnectionSchema,
61-
UpdateSambaConnectionSchema,
6251
)
6352
from syncmaster.schemas.v1.connections.sftp import (
6453
CreateSFTPConnectionSchema,
6554
ReadSFTPConnectionSchema,
66-
UpdateSFTPConnectionSchema,
6755
)
6856
from syncmaster.schemas.v1.connections.webdav import (
6957
CreateWebDAVConnectionSchema,
7058
ReadWebDAVConnectionSchema,
71-
UpdateWebDAVConnectionSchema,
7259
)
7360
from syncmaster.schemas.v1.page import PageSchema
7461
from syncmaster.schemas.v1.types import NameConstr
@@ -105,22 +92,6 @@
10592
| ReadSambaConnectionSchema,
10693
Field(discriminator="type"),
10794
]
108-
UpdateConnectionSchema = Annotated[
109-
UpdateOracleConnectionSchema
110-
| UpdatePostgresConnectionSchema
111-
| UpdateMySQLConnectionSchema
112-
| UpdateMSSQLConnectionSchema
113-
| UpdateClickhouseConnectionSchema
114-
| UpdateHiveConnectionSchema
115-
| UpdateHDFSConnectionSchema
116-
| UpdateS3ConnectionSchema
117-
| UpdateSFTPConnectionSchema
118-
| UpdateFTPConnectionSchema
119-
| UpdateFTPSConnectionSchema
120-
| UpdateWebDAVConnectionSchema
121-
| UpdateSambaConnectionSchema,
122-
Field(discriminator="type"),
123-
]
12495

12596

12697
class ConnectionCopySchema(BaseModel):

syncmaster/schemas/v1/connections/connection_base.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,5 @@ class Config:
2626
populate_by_name = True
2727

2828

29-
class UpdateConnectionBaseSchema(BaseModel):
30-
name: NameConstr | None = None # noqa: F722
31-
description: str | None = None
32-
33-
3429
class ReadAuthDataSchema(BaseModel):
3530
auth_data: ReadConnectionAuthDataSchema = Field(discriminator="type", default=...)

syncmaster/schemas/v1/connections/ftp.py

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,11 @@
66
from syncmaster.schemas.v1.auth import (
77
CreateBasicAuthSchema,
88
ReadBasicAuthSchema,
9-
UpdateBasicAuthSchema,
109
)
1110
from syncmaster.schemas.v1.connection_types import FTP_TYPE
1211
from syncmaster.schemas.v1.connections.connection_base import (
1312
CreateConnectionBaseSchema,
1413
ReadConnectionBaseSchema,
15-
UpdateConnectionBaseSchema,
1614
)
1715

1816

@@ -26,11 +24,6 @@ class ReadFTPConnectionDataSchema(BaseModel):
2624
port: int
2725

2826

29-
class UpdateFTPConnectionDataSchema(BaseModel):
30-
host: str | None = None
31-
port: int | None = None
32-
33-
3427
class CreateFTPConnectionSchema(CreateConnectionBaseSchema):
3528
type: FTP_TYPE = Field(..., description="Connection type")
3629
data: CreateFTPConnectionDataSchema = Field(
@@ -49,9 +42,3 @@ class ReadFTPConnectionSchema(ReadConnectionBaseSchema):
4942
type: FTP_TYPE
5043
data: ReadFTPConnectionDataSchema = Field(alias="connection_data")
5144
auth_data: ReadBasicAuthSchema | None = None
52-
53-
54-
class UpdateFTPConnectionSchema(UpdateConnectionBaseSchema):
55-
type: FTP_TYPE
56-
data: UpdateFTPConnectionDataSchema | None = Field(alias="connection_data", default=None)
57-
auth_data: UpdateBasicAuthSchema | None = None

0 commit comments

Comments
 (0)