Skip to content

Commit 4a67874

Browse files
committed
factor out Database
1 parent c792410 commit 4a67874

File tree

5 files changed

+56
-164
lines changed

5 files changed

+56
-164
lines changed

ipdb/base_station.py

Lines changed: 3 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
:copyright: ©2018 by IPIP.net
44
"""
55

6-
from .database import Reader
6+
from .database import Database
77

88

99
class BaseStationInfo:
@@ -20,44 +20,6 @@ def __init__(self, **kwargs):
2020
self.__dict__[key] = self._map[key]
2121

2222

23-
class BaseStation:
23+
class BaseStation(Database):
2424

25-
db = None
26-
27-
def __init__(self, name):
28-
self.db = Reader(name)
29-
30-
def reload(self, name):
31-
try:
32-
db = Reader(name)
33-
self.db = db
34-
return True
35-
except:
36-
return False
37-
38-
def find(self, addr, language):
39-
return self.db.find(addr, language)
40-
41-
def find_map(self, addr, language):
42-
return self.db.find_map(addr, language)
43-
44-
def find_info(self, addr, language):
45-
m = self.db.find_map(addr, language)
46-
if m is None:
47-
return None
48-
return BaseStationInfo(**m)
49-
50-
def is_ipv4(self):
51-
return self.db.is_support_ipv4()
52-
53-
def is_ipv6(self):
54-
return self.db.is_support_ipv6()
55-
56-
def languages(self):
57-
return self.db.support_languages()
58-
59-
def fields(self):
60-
return self.db.support_fields()
61-
62-
def build_time(self):
63-
return self.db.build_utc_time()
25+
info = BaseStationInfo

ipdb/city.py

Lines changed: 3 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
:copyright: ©2018 by IPIP.net
44
"""
55

6-
from .database import Reader
6+
from .database import Database
77

88

99
class CityInfo:
@@ -34,44 +34,6 @@ def __init__(self, **kwargs):
3434
self.__dict__[key] = self._map[key]
3535

3636

37-
class City:
37+
class City(Database):
3838

39-
db = None
40-
41-
def __init__(self, name):
42-
self.db = Reader(name)
43-
44-
def reload(self, name):
45-
try:
46-
db = Reader(name)
47-
self.db = db
48-
return True
49-
except:
50-
return False
51-
52-
def find(self, addr, language):
53-
return self.db.find(addr, language)
54-
55-
def find_map(self, addr, language):
56-
return self.db.find_map(addr, language)
57-
58-
def find_info(self, addr, language):
59-
m = self.db.find_map(addr, language)
60-
if m is None:
61-
return None
62-
return CityInfo(**m)
63-
64-
def is_ipv4(self):
65-
return self.db.is_support_ipv4()
66-
67-
def is_ipv6(self):
68-
return self.db.is_support_ipv6()
69-
70-
def languages(self):
71-
return self.db.support_languages()
72-
73-
def fields(self):
74-
return self.db.support_fields()
75-
76-
def build_time(self):
77-
return self.db.build_utc_time()
39+
info = CityInfo

ipdb/database.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,3 +162,47 @@ def is_support_ipv6(self):
162162

163163
def build_utc_time(self):
164164
return self._meta.build
165+
166+
167+
class Database:
168+
169+
db = None
170+
info = None
171+
172+
def __init__(self, name):
173+
self.db = Reader(name)
174+
175+
def reload(self, name):
176+
try:
177+
db = Reader(name)
178+
self.db = db
179+
return True
180+
except:
181+
return False
182+
183+
def find(self, addr, language):
184+
return self.db.find(addr, language)
185+
186+
def find_map(self, addr, language):
187+
return self.db.find_map(addr, language)
188+
189+
def find_info(self, addr, language):
190+
m = self.db.find_map(addr, language)
191+
if m is None:
192+
return None
193+
return self.info(**m)
194+
195+
def is_ipv4(self):
196+
return self.db.is_support_ipv4()
197+
198+
def is_ipv6(self):
199+
return self.db.is_support_ipv6()
200+
201+
def languages(self):
202+
return self.db.support_languages()
203+
204+
def fields(self):
205+
return self.db.support_fields()
206+
207+
def build_time(self):
208+
return self.db.build_utc_time()

ipdb/district.py

Lines changed: 3 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
:copyright: ©2018 by IPIP.net
44
"""
55

6-
from .database import Reader
6+
from .database import Database
77

88

99
class DistrictInfo:
@@ -22,44 +22,6 @@ def __init__(self, **kwargs):
2222
self.__dict__[key] = self._map[key]
2323

2424

25-
class District:
25+
class District(Database):
2626

27-
db = None
28-
29-
def __init__(self, name):
30-
self.db = Reader(name)
31-
32-
def reload(self, name):
33-
try:
34-
db = Reader(name)
35-
self.db = db
36-
return True
37-
except:
38-
return False
39-
40-
def find(self, addr, language):
41-
return self.db.find(addr, language)
42-
43-
def find_map(self, addr, language):
44-
return self.db.find_map(addr, language)
45-
46-
def find_info(self, addr, language):
47-
m = self.db.find_map(addr, language)
48-
if m is None:
49-
return None
50-
return DistrictInfo(**m)
51-
52-
def is_ipv4(self):
53-
return self.db.is_support_ipv4()
54-
55-
def is_ipv6(self):
56-
return self.db.is_support_ipv6()
57-
58-
def languages(self):
59-
return self.db.support_languages()
60-
61-
def fields(self):
62-
return self.db.support_fields()
63-
64-
def build_time(self):
65-
return self.db.build_utc_time()
27+
info = DistrictInfo

ipdb/idc.py

Lines changed: 3 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
:copyright: ©2018 by IPIP.net
44
"""
55

6-
from .database import Reader
6+
from .database import Database
77

88

99
class IDCInfo:
@@ -20,44 +20,6 @@ def __init__(self, **kwargs):
2020
self.__dict__[key] = self._map[key]
2121

2222

23-
class IDC:
23+
class IDC(Database):
2424

25-
db = None
26-
27-
def __init__(self, name):
28-
self.db = Reader(name)
29-
30-
def reload(self, name):
31-
try:
32-
db = Reader(name)
33-
self.db = db
34-
return True
35-
except:
36-
return False
37-
38-
def find(self, addr, language):
39-
return self.db.find(addr, language)
40-
41-
def find_map(self, addr, language):
42-
return self.db.find_map(addr, language)
43-
44-
def find_info(self, addr, language):
45-
m = self.db.find_map(addr, language)
46-
if m is None:
47-
return None
48-
return IDCInfo(**m)
49-
50-
def is_ipv4(self):
51-
return self.db.is_support_ipv4()
52-
53-
def is_ipv6(self):
54-
return self.db.is_support_ipv6()
55-
56-
def languages(self):
57-
return self.db.support_languages()
58-
59-
def fields(self):
60-
return self.db.support_fields()
61-
62-
def build_time(self):
63-
return self.db.build_utc_time()
25+
info = IDCInfo

0 commit comments

Comments
 (0)