@@ -52,20 +52,16 @@ def get_schema(self, schema_id: int) -> Optional[Schema]:
5252 rs = self .schema_id_index .get (schema_id , None )
5353 return rs .schema if rs else None
5454
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-
6155 def get_registered_schema_by_schema (
62- self , subject : str ,
56+ self ,
57+ subject_name : str ,
6358 schema : Schema
6459 ) -> Optional [RegisteredSchema ]:
6560 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
6965 return None
7066
7167 def get_version (self , subject_name : str , version : int ) -> Optional [RegisteredSchema ]:
@@ -119,15 +115,18 @@ def remove_by_schema(self, registered_schema: RegisteredSchema):
119115 if subject_name in self .subject_schemas :
120116 self .subject_schemas [subject_name ].remove (registered_schema )
121117
122- def remove_by_subject (self , subject_name : str ):
118+ def remove_by_subject (self , subject_name : str ) -> List [ int ] :
123119 with self .lock :
120+ versions = []
124121 if subject_name in self .subject_schemas :
125122 for rs in self .subject_schemas [subject_name ]:
123+ versions .append (rs .version )
126124 schema_id = self .schema_index .pop (rs .schema , None )
127125 if schema_id is not None :
128126 self .schema_id_index .pop (schema_id , None )
129127
130128 del self .subject_schemas [subject_name ]
129+ return versions
131130
132131 def clear (self ):
133132 with self .lock :
@@ -153,14 +152,8 @@ def register_schema_full_response(
153152 self , subject_name : str , schema : 'Schema' ,
154153 normalize_schemas : bool = False
155154 ) -> '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 :
164157 return registered_schema
165158
166159 latest_schema = self ._store .get_latest_version (subject_name )
@@ -198,11 +191,11 @@ def lookup_schema(
198191
199192 raise SchemaRegistryError (404 , 40400 , "Schema Not Found" )
200193
201- def get_subjects (self ):
194+ def get_subjects (self ) -> List [ str ] :
202195 return self ._store .get_subjects ()
203196
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 )
206199
207200 def get_latest_version (self , subject_name : str , fmt : str = None ) -> 'RegisteredSchema' :
208201 registered_schema = self ._store .get_latest_version (subject_name )
@@ -234,7 +227,7 @@ def get_version(
234227 def get_versions (self , subject_name : str ) -> List [int ]:
235228 return self ._store .get_versions (subject_name )
236229
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 :
238231 registered_schema = self ._store .get_version (subject_name , version )
239232 if registered_schema is not None :
240233 self ._store .remove_by_schema (registered_schema )
0 commit comments