'Return groups from the database'

def get_groups(self, filterTerm=None, groupName=None, groupDomain=None):

    if groupDomain:
        groupDomain = groupDomain.split('.')[0].upper()
    cur = self.conn.cursor()
    if self.is_group_valid(filterTerm):
        cur.execute('SELECT    *    FROM    groups    WHERE    id=?    LIMIT    1', [filterTerm])
    elif (groupName and groupDomain):
        cur.execute('SELECT    *    FROM    groups    WHERE    LOWER(name)=LOWER(?)    AND    LOWER(domain)=LOWER(?)', [groupName, groupDomain])
    elif (filterTerm and (filterTerm != '')):
        cur.execute('SELECT    *    FROM    groups    WHERE    LOWER(name)    LIKE    LOWER(?)', ['%{}%'.format(filterTerm)])
    else:
        cur.execute('SELECT    *    FROM    groups')
    results = cur.fetchall()
    cur.close()
    logging.debug('get_groups(filterTerm={},    groupName={},    groupDomain={})    =>    {}'.format(filterTerm, groupName, groupDomain, results))
    return results
