updated skill repository to use new schema with global ID
parent
143c14159d
commit
d943fe29b3
|
@ -1,2 +1,4 @@
|
||||||
|
from .entity.display import SkillDisplay
|
||||||
|
from .repository.display import SkillDisplayRepository
|
||||||
from .repository.setting import SkillSettingRepository
|
from .repository.setting import SkillSettingRepository
|
||||||
from .repository.skill import SkillRepository
|
from .repository.skill import SkillRepository
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
|
from datetime import datetime
|
||||||
from typing import List
|
from typing import List
|
||||||
|
|
||||||
|
|
||||||
|
@ -38,7 +39,7 @@ class SkillVersion(object):
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class Skill(object):
|
class Skill(object):
|
||||||
|
global_id: str
|
||||||
name: str
|
name: str
|
||||||
url: str
|
has_settings: bool = None
|
||||||
has_settings: bool
|
|
||||||
id: str = None
|
id: str = None
|
||||||
|
|
|
@ -90,7 +90,7 @@ class SkillRepository(RepositoryBase):
|
||||||
|
|
||||||
@use_transaction
|
@use_transaction
|
||||||
def add(self, device_id: str, skill: dict) -> str:
|
def add(self, device_id: str, skill: dict) -> str:
|
||||||
skill_id = self._add_skill(skill['name'])
|
skill_id = self._add_skill(skill['global_id'], skill['name'])
|
||||||
settings_value, settings_display = self._extract_settings(skill)
|
settings_value, settings_display = self._extract_settings(skill)
|
||||||
settings_display = json.dumps(skill)
|
settings_display = json.dumps(skill)
|
||||||
skill_settings_display_id = SettingsDisplayRepository(self.db).add(skill_id, settings_display)
|
skill_settings_display_id = SettingsDisplayRepository(self.db).add(skill_id, settings_display)
|
||||||
|
@ -98,13 +98,14 @@ class SkillRepository(RepositoryBase):
|
||||||
DeviceSkillRepository(self.db).add(device_id, skill_id, skill_settings_display_id, settings_value)
|
DeviceSkillRepository(self.db).add(device_id, skill_id, skill_settings_display_id, settings_value)
|
||||||
return skill_id
|
return skill_id
|
||||||
|
|
||||||
def _add_skill(self, skill_name) -> str:
|
def _add_skill(self, global_id: str, name: str) -> str:
|
||||||
db_request = self._build_db_request(
|
db_request = self._build_db_request(
|
||||||
'add_skill.sql',
|
sql_file_name='add_skill.sql',
|
||||||
args=dict(skill_name=skill_name)
|
args=dict(global_id=global_id, skill_name=name)
|
||||||
)
|
)
|
||||||
result = self.cursor.insert_returning(db_request)
|
db_result = self.cursor.insert_returning(db_request)
|
||||||
return result['id']
|
|
||||||
|
return db_result['id']
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _extract_settings(skill):
|
def _extract_settings(skill):
|
||||||
|
@ -142,3 +143,22 @@ class SkillRepository(RepositoryBase):
|
||||||
args=dict(device_id=device_id)
|
args=dict(device_id=device_id)
|
||||||
)
|
)
|
||||||
return self.cursor.select_all(db_request)
|
return self.cursor.select_all(db_request)
|
||||||
|
|
||||||
|
def get_installer_skill(self):
|
||||||
|
return self._select_one_into_dataclass(
|
||||||
|
dataclass=Skill,
|
||||||
|
sql_file_name='get_installer_skill_settings.sql'
|
||||||
|
)
|
||||||
|
|
||||||
|
def ensure_skill_exists(self, global_id: str, name: str) -> str:
|
||||||
|
skill = self._select_one_into_dataclass(
|
||||||
|
dataclass=Skill,
|
||||||
|
sql_file_name='get_skill_by_global_id.sql',
|
||||||
|
args=dict(global_id=global_id)
|
||||||
|
)
|
||||||
|
if skill is None:
|
||||||
|
skill_id = self._add_skill(global_id, name)
|
||||||
|
else:
|
||||||
|
skill_id = skill.id
|
||||||
|
|
||||||
|
return skill_id
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
INSERT INTO
|
INSERT INTO
|
||||||
skill.skill(name)
|
skill.skill (global_id, name)
|
||||||
VALUES
|
VALUES
|
||||||
(%(skill_name)s)
|
(%(global_id)s, %(skill_name)s)
|
||||||
RETURNING
|
RETURNING
|
||||||
id
|
id
|
|
@ -12,8 +12,8 @@ WITH
|
||||||
SELECT DISTINCT
|
SELECT DISTINCT
|
||||||
json_build_object(
|
json_build_object(
|
||||||
'id', s.id,
|
'id', s.id,
|
||||||
|
'global_id', s.global_id,
|
||||||
'name', s.name,
|
'name', s.name,
|
||||||
'url', s.url,
|
|
||||||
'has_settings', sm.has_settings
|
'has_settings', sm.has_settings
|
||||||
)::jsonb as skill
|
)::jsonb as skill
|
||||||
FROM
|
FROM
|
||||||
|
|
Loading…
Reference in New Issue