'real': self.real, 'character_teams': t, 'character_volumes': v } return ans def __repr__(self): return 'Character(name={}, image={}, birth={}, gender={}, creator={}, publisher={}, appear={}, real={}, num_appearances={}'.format( self.name, self.image, self.birth, self.gender, self.creator, self.publisher_name, self.appear, self.real, self.num_appearances) + ")" # Trigger that updates Characters and their triggers CHARACTER_VECTOR_TRIGGER = db.DDL(""" CREATE TRIGGER character_tsvector_update BEFORE INSERT OR UPDATE ON "Character" FOR EACH ROW EXECUTE PROCEDURE tsvector_update_trigger(tsvector_col, 'pg_catalog.english', 'name', 'publisher_name', 'appear' ) """) db.event.listen(Character.__table__, 'after_create', CHARACTER_VECTOR_TRIGGER.execute_if(dialect='postgresql')) class Volume(db.Model): """ image: image url description: info on volume count_of_issues: num issues in volume start_year: when volume started publisher: main publisher characters: characters in volume teams: teams in the characters name: name of volume
duration = db.Column(db.String(10)) listed_in = db.Column(db.Text) description = db.Column(db.Text) tsv_searchable_text = db.Column(TSVECTOR) __table_args__ = (db.Index('tsv_idx', 'tsv_searchable_text', postgresql_using = 'gin'),) def __repr__(self): return f'<Show {self.title}>' function_snippet = db.DDL(""" CREATE FUNCTION tsv_searchable_text_trigger() RETURNS trigger AS $$ begin new.tsv_searchable_text := setweight(to_tsvector('pg_catalog.english', coalesce(new.title,'')), 'A') || setweight(to_tsvector('pg_catalog.english', coalesce(new.description,'')), 'B') || setweight(to_tsvector('pg_catalog.english', coalesce(new.director,'')), 'C') || setweight(to_tsvector('pg_catalog.english', coalesce(new.actors,'')), 'C'); return new; end $$ LANGUAGE plpgsql; """) trigger_snippet = db.DDL(""" CREATE TRIGGER searchable_text_update BEFORE INSERT OR UPDATE ON show FOR EACH ROW EXECUTE PROCEDURE tsv_searchable_text_trigger(); """) db.event.listen(Show.__table__, 'after_create', function_snippet.execute_if(dialect = 'postgresql')) db.event.listen(Show.__table__, 'after_create', trigger_snippet.execute_if(dialect = 'postgresql'))