<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def filter_search(self, code=None, name=None, abilities=None, attributes=None, info=None):
 """ Return a list of codes and names pertaining to cards that have the given information values stored. Can take a code integer, name string, abilities dict {phase: ability list/"*"}, attributes list, info dict {key, value list/"*"}. In the above argument examples "*" is a string that may be passed instead of a list as the dict value to match anything that stores that key. """

        command = "SELECT code, name FROM CARDS "
        command += Where_filter_gen(("code", code), ("name", name),
                                    ("abilities", abilities),
                                    ("attributes", attributes),
                                    ("info", info))

        with sqlite3.connect(self.dbname) as carddb:
            return carddb.execute(command).fetchall()