-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Etablere søke-API for dialoger for sluttbrukere #34
Comments
PostgreSQL full text-search: https://www.postgresql.org/docs/current/textsearch.html Bruk av full text match og pg_trgm sammen: https://www.postgresql.org/docs/13/pgtrgm.html#id-1.11.7.40.9 Eksempel på bruk av pg_trgm og similarity (%) operator for fuzzy matching: -- Det kreves GIN indekser for felter som skal søkes i
CREATE INDEX trgm_idx_title ON dialogsUSING GIN (title gin_trgm_ops);
CREATE INDEX trgm_idx_searchtags ON dialogs USING GIN (body gin_trgm_ops);
CREATE INDEX trgm_idx_sendername ON dialogs USING GIN (body gin_trgm_ops);
CREATE INDEX trgm_idx_body ON dialogs USING GIN (body gin_trgm_ops);
SELECT *
FROM dialogs
WHERE title % 'satisfied' OR searchtags % 'satisfied' OR sendername % 'satisfied' OR body % 'satisfied';
-- Vil returnere rader hvor noen av disse feltene inneholder ord som f.eks. "satisfying"
-- Se også
SET pg_trgm.similarity_threshold = 0.3;
|
Edit: Vi går bort fra dette i denne omgang. Forklaring på kriterie: | GITT en autorisert forespørsel til søke-API-et Dette er for å kunne håndtere paginering gjennom elementer med lik createdAt. Ta f.eks.:
|
Lukke analyse-tasken for søke-kriterie-krav. Vi må ta utgangspunkt i noe for å kunne foreta en autorisasjon, og for felles arbeidsflate vil det i første omgang alltid være snakk om én party. "Søk-på-tvers"-funksjonalitet vil også kunne håndteres gjennom at man kan søke på flere avgivere (opptil et gitt antall, foreløpig definert som 20), eller bare oppgi en eller flere service resources (også oppad begrenset til 20). Denne begrensningen er for å unngå ekstremt store responser knyttet til autorisasjon (se #42) |
Oppdaterte kriterier:
Edit: fler-feltssortering er tilbake pga. funksjonelt behov for dueAt_asc,updatedAt_desc |
Dialogporten skal ha et søke-API som gjør det mulig å hente ut lister av dialoger for sluttbrukere.
DTO-ene som brukes for å beskrive dialoger i lister har mindre informasjon enn detalj-visningen. Den skal inneholde informasjon om
Autorisasjon
Se #42
Tasks
Akseptansekriterier
GITT en autorisert forespørsel til søke-API-et
NÅR det ikke oppgis noen parametre
SÅ skal det returneres opptil 100 elementer sortert synkende etter createdAt
GITT en autorisert forespørsel til søke-API-et
NÅR søkeparameter oppgis uten at parameter for søkespråk oppgis
SÅ skal det returneres en liste med dialogliste-DTO-er som inneholder det oppgitte søkeordet i title, searchTags eller avsenders navn på hvilket som helst av del definerte språkene
GITT en autorisert forespørsel til søke-API-et
NÅR søkeparameter oppgis og parameter for søkespråk oppgis
SÅ skal det returneres en liste med dialogliste-DTO-er som inneholder det oppgitte søkeordet i title, searchTags eller avsenders navn på det oppgitt språket
GITT en autorisert forespørsel til søke-API-et
NÅR det verken oppgis filteringsparametere for party eller for tjenesteressurs
SÅ skal det returneres en 400 Bad request med feilmelding om at minst ett party eller minst én tjenesteressurs må oppgis
GITT en autorisert forespørsel til søke-API-et
NÅR det oppgis filtreringsparametre som inneholder kommadelte lister av verdier for en eller flere av følgende felter: org, serviceresource, party, status, extendedstatus
SÅ skal det returneres en liste med dialogliste-DTO-er som svarer til filtrene, hvor feltene AND-es og listene innfor hvert felt OR-es, sortert synkende etter createdAt
GITT en autorisert forespørsel til søke-API-et
NÅR det oppgis filtreringsparametre som inneholder kommadelte lister av verdier for en eller flere av følgende felter: org, serviceresource, party, status, extendedstatus
OG en av de oppgitte listene for org, serviceresource, party eller extendedstatus inneholder mer enn 20 verdier
SÅ skal det returneres en 400 Bad request med feilmelding om at maks 20 verdier kan oppgis
GITT en autorisert forespørsel til søke-API-et
NÅR det oppgis filtreringsparametre som inneholder kommadelte lister av verdier for status
OG en av de oppgitte verdiene ikke er en kjent status-verdi
SÅ skal det returneres en 400 Bad request med feilmelding om hvilke status-verdier som er gyldige
GITT en autorisert forespørsel til søke-API-et
NÅR til/fra datoer for createdAt og/eller updatedAt og eller dueAt oppgis i ISO 8601 timestamp-format med tidssone
SÅ skal det returneres en liste med dialogliste-DTO-e som svarer til filtrene sortert synkende etter createdAt
GITT en autorisert forespørsel til søke-API-et
NÅR sorteringsparametere oppgir én av createdat, updatedat og dueat
OG parameter for sorteringsretning oppgis til synkende eller er ikke oppgitt
SÅ skal det returneres en liste med dialogliste-DTO-er som svarer til sorteringsparameterne synkende
GITT en autorisert forespørsel til søke-API-et
NÅR sorteringsparametere oppgir én av createdat, updatedat og dueat
OG parameter for sorteringsretning oppgis til stigende
SÅ skal det returneres en liste med dialogliste-DTO-er som svarer til sorteringsparameterne stigende
GITT en autorisert forespørsel til søke-API-et
NÅR det oppgis sorteringsparametre som ikke er kjente
SÅ skal det returneres en feilmelding (400 Bad Request) med body som informerer om hvilke sorteringsparametre som er gydlige
GITT en autorisert forespørsel til søke-API-et
NÅR det oppgis filtreringsparametere som ikke er kjente
SÅ skal disse ignoreres, og det returneres en liste som spesifisert over
GITT en autorisert forespørsel til søke-API-et
NÅR det oppgis et pagineringsantall og dette antallet er et heltall mellom 1-1000
SÅ skal det returneres opptil det oppgitte pagineringsantallet elementer som svarer til evt. oppgitte filtre og sorteringsrekkefølge
GITT en autorisert forespørsel til søke-API-et
NÅR det oppgis et pagineringsantall og dette antallet IKKE er et heltall mellom 1-1000
SÅ skal det returneres en feilmelding (400 Bad request) med body som informerer om feilen
GITT en autorisert forespørsel til søke-API-et
NÅR en dialog har en satt VisibleAt-dato som er ETTER gjeldende tidspunkt
SÅ skal dialogen ikke vises i lista
GITT en autorisert forespørsel til søke-API-et
NÅR en dialog har en satt ExpiresAt-dato som er FØR gjeldende tidspunkt
SÅ skal dialogen ikke vises i lista
GITT en autorisert forespørsel til søke-API-et
NÅR en forespørselen inneholder et filters om reduserer antall elementer til null, eller brukeren ikke er autorisert for noen elementer
SÅ skal returen være en tom liste og 200 OK
GITT en autorisert forespørsel til søke-API-et
NÅR en forespørselen inneholder et after-parameter som ikke er et ISO 8901-timestamp
SÅ skal det returneres en feilmelding (400 Bad request) med body som informerer om feilen
GITT en autorisert forespørsel til søke-API-et
NÅR en forespørselen inneholder et after-parameter som er et ISO 8901-timestamp
OG parameter for sorteringsretning oppgis til synkende eller er ikke oppgitt
OG parameter for sortering ikke er oppgitt
SÅ skal det returneres alle dialoger som har createdAt < oppgitt timestamp
GITT en autorisert forespørsel til søke-API-et
NÅR en forespørselen inneholder et after-parameter som er et ISO 8901-timestamp
OG parameter for sorteringsretning oppgis til stigende
OG parameter for sortering ikke er oppgitt
SÅ skal det returneres alle dialoger som har createdAt > oppgitt timestamp
GITT en autorisert forespørsel til søke-API-et
NÅR en forespørselen inneholder et after-parameter som er et ISO 8901-timestamp
OG parameter for sortering er oppgitt
SÅ skal det returneres alle dialoger som har sorteringsfelt-verdi større/mindre (avhengig av sorteringsretning) enn eller lik oppgitt timestamp
Se også
The text was updated successfully, but these errors were encountered: