@@ -52,20 +52,16 @@ def get_schema(self, schema_id: int) -> Optional[Schema]:
52
52
rs = self .schema_id_index .get (schema_id , None )
53
53
return rs .schema if rs else None
54
54
55
- def get_schema_id_by_subject (self , subject : str , schema : Schema ) -> Optional [int ]:
56
- with self .lock :
57
- if schema in self .subject_schemas [subject ]:
58
- return self .schema_index .get (schema , None )
59
- return None
60
-
61
55
def get_registered_schema_by_schema (
62
- self , subject : str ,
56
+ self ,
57
+ subject_name : str ,
63
58
schema : Schema
64
59
) -> Optional [RegisteredSchema ]:
65
60
with self .lock :
66
- for rs in self .subject_schemas [subject ]:
67
- if rs .schema == schema :
68
- return rs
61
+ if subject_name in self .subject_schemas :
62
+ for rs in self .subject_schemas [subject_name ]:
63
+ if rs .schema == schema :
64
+ return rs
69
65
return None
70
66
71
67
def get_version (self , subject_name : str , version : int ) -> Optional [RegisteredSchema ]:
@@ -119,15 +115,18 @@ def remove_by_schema(self, registered_schema: RegisteredSchema):
119
115
if subject_name in self .subject_schemas :
120
116
self .subject_schemas [subject_name ].remove (registered_schema )
121
117
122
- def remove_by_subject (self , subject_name : str ):
118
+ def remove_by_subject (self , subject_name : str ) -> List [ int ] :
123
119
with self .lock :
120
+ versions = []
124
121
if subject_name in self .subject_schemas :
125
122
for rs in self .subject_schemas [subject_name ]:
123
+ versions .append (rs .version )
126
124
schema_id = self .schema_index .pop (rs .schema , None )
127
125
if schema_id is not None :
128
126
self .schema_id_index .pop (schema_id , None )
129
127
130
128
del self .subject_schemas [subject_name ]
129
+ return versions
131
130
132
131
def clear (self ):
133
132
with self .lock :
@@ -153,14 +152,8 @@ def register_schema_full_response(
153
152
self , subject_name : str , schema : 'Schema' ,
154
153
normalize_schemas : bool = False
155
154
) -> 'RegisteredSchema' :
156
- schema_id = self ._store .get_schema_id_by_subject (subject_name , schema )
157
- if schema_id is not None :
158
- registered_schema = RegisteredSchema (
159
- schema_id = schema_id ,
160
- schema = schema ,
161
- subject = subject_name ,
162
- version = None
163
- )
155
+ registered_schema = self ._store .get_registered_schema_by_schema (subject_name , schema )
156
+ if registered_schema is not None :
164
157
return registered_schema
165
158
166
159
latest_schema = self ._store .get_latest_version (subject_name )
@@ -198,11 +191,11 @@ def lookup_schema(
198
191
199
192
raise SchemaRegistryError (404 , 40400 , "Schema Not Found" )
200
193
201
- def get_subjects (self ):
194
+ def get_subjects (self ) -> List [ str ] :
202
195
return self ._store .get_subjects ()
203
196
204
- def delete_subject (self , subject_name : str , permanent : bool = False ):
205
- self ._store .remove_by_subject (subject_name )
197
+ def delete_subject (self , subject_name : str , permanent : bool = False ) -> List [ int ] :
198
+ return self ._store .remove_by_subject (subject_name )
206
199
207
200
def get_latest_version (self , subject_name : str , fmt : str = None ) -> 'RegisteredSchema' :
208
201
registered_schema = self ._store .get_latest_version (subject_name )
@@ -234,7 +227,7 @@ def get_version(
234
227
def get_versions (self , subject_name : str ) -> List [int ]:
235
228
return self ._store .get_versions (subject_name )
236
229
237
- def delete_version (self , subject_name : str , version : int ) -> int :
230
+ def delete_version (self , subject_name : str , version : int , permanent : bool = False ) -> int :
238
231
registered_schema = self ._store .get_version (subject_name , version )
239
232
if registered_schema is not None :
240
233
self ._store .remove_by_schema (registered_schema )
0 commit comments