| 55 | } |
| 56 | |
| 57 | func NewPostgresFilterTable(db *sql.DB) (tables.Filter, error) { |
| 58 | _, err := db.Exec(filterSchema) |
| 59 | if err != nil { |
| 60 | return nil, err |
| 61 | } |
| 62 | s := &filterStatements{} |
| 63 | if s.selectFilterStmt, err = db.Prepare(selectFilterSQL); err != nil { |
| 64 | return nil, err |
| 65 | } |
| 66 | if s.selectFilterIDByContentStmt, err = db.Prepare(selectFilterIDByContentSQL); err != nil { |
| 67 | return nil, err |
| 68 | } |
| 69 | if s.insertFilterStmt, err = db.Prepare(insertFilterSQL); err != nil { |
| 70 | return nil, err |
| 71 | } |
| 72 | return s, nil |
| 73 | } |
| 74 | |
| 75 | func (s *filterStatements) SelectFilter( |
| 76 | ctx context.Context, target *gomatrixserverlib.Filter, localpart string, filterID string, |