diff --git a/database/add_category.py b/database/add_category.py index 3f32784..a44ac76 100644 --- a/database/add_category.py +++ b/database/add_category.py @@ -11,7 +11,7 @@ def add_category_column(): cursor = conn.cursor() category = input("What category do you want to add to the species table? ").lower() if not column_exists(cursor, "species", category): - cursor.execute(f"ALTER TABLE species ADD COLUMN {category} TEXT") + cursor.execute(f"ALTER TABLE species ADD COLUMN ? TEXT", (category,)) print(f"Column '{category}' added.") else: print("Column already exists.") diff --git a/database/db_commands.py b/database/db_commands.py index 09d9218..23a607e 100644 --- a/database/db_commands.py +++ b/database/db_commands.py @@ -23,6 +23,30 @@ def get_all_species(): return [dict(row) for row in rows] +def get_species_by_name(species_english): + with get_db() as conn: + row = conn.execute( + "SELECT * FROM species WHERE species_english = ?", + (species_english,) + ).fetchone() + return dict(row) if row else None + +def search_species(query): + with get_db() as conn: + rows = conn.execute( + """SELECT * +FROM species +WHERE + instr(LOWER(COALESCE(CAST(species_english AS TEXT), '')), ?1) > 0 + OR instr(LOWER(COALESCE(CAST(species_latin AS TEXT), '')), ?1) > 0 + OR instr(LOWER(COALESCE(CAST(body_text AS TEXT), '')), ?1) > 0 + OR instr(LOWER(COALESCE(CAST(category AS TEXT), '')), ?1) > 0 + OR instr(LOWER(COALESCE(CAST(extinction_risk AS TEXT), '')), ?1) > 0;""", + (query.lower(),) + ).fetchmany() + return [dict(row) for row in rows] + + def get_species_by_name(species_english): with get_db() as conn: row = conn.execute( diff --git a/routes/species/species.py b/routes/species/species.py index dbf19fe..f434c14 100644 --- a/routes/species/species.py +++ b/routes/species/species.py @@ -1,7 +1,7 @@ -from flask import render_template, Blueprint +from flask import render_template, Blueprint, request import configparser -from database.db_commands import get_all_species +from database.db_commands import get_all_species, search_species config = configparser.ConfigParser() @@ -29,5 +29,7 @@ def all_species(): @page.route("/search") def search(): query = request.args.get("search-query") + + results = search_species(query) - return render_template("/species/species_search.jinja", results=results) \ No newline at end of file + return render_template("/species/species_search.jinja", results=results, query=query) \ No newline at end of file diff --git a/templates/species/species_search.jinja b/templates/species/species_search.jinja index 5838a84..d87defd 100644 --- a/templates/species/species_search.jinja +++ b/templates/species/species_search.jinja @@ -11,7 +11,7 @@ Species Database {# All Species #}