def add_wake_word(db) -> WakeWord: """Add a wake word for use in testing. :param db: Database connection to the Mycroft DB :return: """ wake_word = WakeWord(name="hey selene", engine="precise") wake_word_repository = WakeWordRepository(db) wake_word.id = wake_word_repository.add(wake_word) return wake_word
def get_by_submission_date(self, submission_date: date) -> List[WakeWordFile]: """Get sample file references based on the submission date. :param submission_date: identifies the date the file was submitted. :return: list of WakeWordFile objects containing the retrieved row """ wake_word_files = [] db_request = self._build_db_request( sql_file_name="get_files_by_submission_date.sql", args=dict(submission_date=submission_date), ) for row in self.cursor.select_all(db_request): file_location = TaggingFileLocation( server=row["server"], directory=row["directory"] ) wake_word = WakeWord(name=row["wake_word_name"], engine=row["engine"]) wake_word_file = WakeWordFile( wake_word=wake_word, name=row["file_name"], origin=row["origin"], submission_date=row["submission_date"], account_id=row["account_id"], location=file_location, ) wake_word_files.append(wake_word_file) return wake_word_files
def _build_device_from_row(row): row["city"] = City(**row["city"]) row["country"] = Country(**row["country"]) row["region"] = Region(**row["region"]) row["timezone"] = Timezone(**row["timezone"]) row["wake_word"] = WakeWord(**row["wake_word"]) row["text_to_speech"] = TextToSpeech(**row["text_to_speech"]) return Device(**row)
def upload_unknown_wake_word_file(context): """Upload a wake word sample file using the public API""" context.wake_words["computer"] = WakeWord(name="computer", engine="test") context.scenario_wake_word = "computer" wake_word_request = dict( wake_word="computer", engine="test", timestamp="12345", model="selene_test_model", ) _call_upload_endpoint(context, wake_word_request)
def _build_device_from_row(row: dict) -> Device: """Build a Device dataclass instance from query results.""" row["city"] = City(**row["city"]) row["country"] = Country(**row["country"]) row["region"] = Region(**row["region"]) row["timezone"] = Timezone(**row["timezone"]) row["wake_word"] = WakeWord(**row["wake_word"]) row["text_to_speech"] = TextToSpeech(**row["text_to_speech"]) row["pantacor_config"] = PantacorConfig(**row["pantacor_config"]) return Device(**row)
def remove_wake_word(db, wake_word: WakeWord): """Remove a wake word and any related sample files from the database :param db: Database connection to the Mycroft DB :param wake_word: the wake word to delete """ file_repository = WakeWordFileRepository(db) wake_word_repository = WakeWordRepository(db) if wake_word.id is None: wake_word.id = wake_word_repository.get_id(wake_word) for wake_word_file in file_repository.get_by_wake_word(wake_word): file_repository.remove(wake_word_file) wake_word_repository.remove(wake_word)
def get_devices_by_account_id(self, account_id: str) -> List[Device]: """Fetch all devices associated to a user from a given account id :param account_id: uuid :return: List of User's devices """ db_request = self._build_db_request( sql_file_name="get_devices_by_account_id.sql", args=dict(account_id=account_id), ) db_results = self.cursor.select_all(db_request) devices = [] for row in db_results: row["city"] = City(**row["city"]) row["country"] = Country(**row["country"]) row["region"] = Region(**row["region"]) row["timezone"] = Timezone(**row["timezone"]) row["wake_word"] = WakeWord(**row["wake_word"]) row["text_to_speech"] = TextToSpeech(**row["text_to_speech"]) devices.append(Device(**row)) return devices
def _convert_db_row_to_dataclass(row) -> WakeWordFile: row.update( wake_word=WakeWord(**row["wake_word"]), location=TaggingFileLocation(**row["location"]), ) return WakeWordFile(**row)