Alla märkbara ändringar ska dokumenteras i denna fil.
Baserat på Keep a Changelog, och följer Semantic Versioning.
- log changes to individualAccess and postAccess
- Verify user logic in user api, resolver and graph.
- Lagt till
LATEXIFY_URL
idocker-compose
och i GitHub-actions - Förbättra formatet av felmeddelanden från
latexify
- Service för LaTeXify med tillhörande graph, resolver och tillägg i .env.example
- Prisma and graphql feature for activities (events) and tickets.
- Tests for activity reducer and API.
- Test for ticket API.
- DateTime scalar for graphql.
- Attributen
coverEndpoint
ochcoverId
för Hehe, där en bild för tidningens framsida genereras automatiskt utifrån PDFen med microservicenpdf-to-png.esek.se
- Exponerat attributet
uploadedAt
för Hehe, vilket är enDateTime
för när Hehen laddades upp DateTime
som en nyScalar
- Schemas för pagination och paginerade Hehes
- Querien
paginatedHehes
för att hämta Hehes med paginering - Utils-funktionen
createPageInfo
som skapar ettPageInfo
-objekt för paginering - Integrationstest för Hehe som kontrollerar att en bild kan skapas från en PDF
- Lagt till testfilen
test-hehe.pdf
som används i integrationstestet - Enhetstest för Hehe som kontrollerar att en felaktig filtyp inte kan laddas upp
- Enhetstester för
paginatedHehes
- Enhetstester för
createPageInfo
- Environment-variabeln
PDF_TO_PNG_BASE_URL
addHehe
-APIn så att denna dessutom skapar framsidan för tidningen och sparar motsvarandecoverId
- Enhetstester och reducer-tester för Hehe så att dessa är kompatibla med tilläggen ovan
- Abstraherat ut uppladdning av filer i integrationstester till filen
fileUpload.ts
- adds decibel_admin feature
- adds Edekvata as a door
- Update the
updateUser
function so that it corectly updates theluCard
field and sets it to null if the input is an empty string.
- SRE-möten grundnivå, avancerad nivå och intern tillagt som mötestyper i prisma schemat och
meeting.graphql
- Extrainsatt sektionsmöte tilldelas namnet "Extra YYYY" istället för "ExtraNN" i meeting reducer.
- Skrev om
prisma:reset
så att det fungerar på Windows också. - Korrigerat språkfel i
election.api.ts
- Omskrivit namntilldelningslogiken i
meeting.reducer.ts
så att fler mötestyper kan läggas till utan framtida ändring i reducern.
- Testen
forget a user
ochreset password properly
iuser.api.ts
.
Adds the ahs_admin
feature access type
la till ny gql metod: allUsersWithIndividualAccess
Adds ledtoa as a door
- Uppdaterat till prisma 5
- Uppdaterat till node 18
- Fixat typescript fel
- Dagordning kan nu bifogas till ett möte separat/för sig själv.
- Lagt till en
users
query iUser
-resolver för att kunna hämta användare från en lista av användarnamn - Lagt till ett testfall för ovanstående
UserApi.updateUser
kan nu ta bortluCard
ifall man skickar med en empty string- Tester för ovan.
getHistoryEntries
returnerar inte längre poster innan folk gått på dem dåonlyCurrent
ellerwithinAccessCooldown
ärtrue
- Lagt till unit-tester för ovanstående
getLatestElections
fungerar som tänktinteractiveTransactions
borttagen sompreviewFeature
ischema.prisma
PengU
utskottet tillagt iutskott.graphql
- Lagt till
User.luCard
med regler enligt egen research - Nytt fält
PrismaUser.luCard
i databas som tillåter null och därför bakåtkompatibel userByCard
query
- Fixat krash i
/files/upload
- Fixat så att vi inte bloatar med scalars som inte används.
- Fixat
Date
resolvers
- Lagt till
Post.sortPriority
så att man kan ändra i vilken ordning poster kommer
getNumberOfVolunteers
räknar inte längre samma användare flera gånger
- Valbar parameter
noAlumni
förnumberOfMembers
för att bara få de som börjat de senaste fem åren
getMultipleMeetings
sorterar nu först på nummer och sen på år
- Lagt till maxstorlek på användares avatarer
- Lagt till allmän maxstorlek på filer
- Profilbilder är nu public
- Man behöver inte vara email adming för att skicka epost till esek adresser
AGPL-3.0-only
licens.
- Skickar email till användaren när man blir nomierad och när man registrerar sig
- Publika fält i user-resolvern matchar nu exakt privacy policy
- Lägger till miljövariabel
POST_ACCESS_COOLDOWN_DAYS
för att indikera hur många dagar efter att en användare gått av sin post som de ska behålla sin access
PostAPI.getHistoryEntries
har nu parameternwithinAccessCooldown
som returnerar history entries vars access inte gått ut enligt cooldownAccessAPI.getUserFullAccess
använder nu post access cooldown
- Fixar sortering av breadcrumbs
- Bättre felmeddelande för DataLoaders
includeInactive
påposts
filterar inte ordentligt.
- Lägger till docstrings i
apikey.api.ts
- Ändrar docstrings i
article.api.ts
till engelska - Ändrar docstrings i
election.api.ts
till engelska - Gjort
ElectionAPI.nominate
till en transaktion, och optimert densamma - Ändrar docstrings i
emergencycontact.api.ts
till engelska - Ändrar några docstrings i
file.api.ts
till engelska - Ändrar docstrings i
hehe.api.ts
till engelska - Ändrar docstrings i
meeting.api.ts
till engelska - Ändrar docstrings i
post.api.ts
till engelska PostAPI.deletePost
använder nu en transaktionPostAPI.getHistoryEntries
now uses username and postname instead of prisma where input- Ändrar docstrings i
user.api.ts
till engelska UserAPI.requestPasswordReset
använder nu en transaktion, och gör saker i en rimlig ordningUserAPI.forgetUser
använder nu en transaktion- Other misc comment edits
- Ändrat hur
special:
taggar hanteras - Lagt till
includeSpecial: Boolean
parameter tillArticle.tags
AccessApi
tar nu bort access och sätter den i en transaktion (via prisma)- Gör alla kommentarer
access.api.ts
helt på engelska
forgetUser
finns nu så vi kan anonymisera användare
meetings
funkade ifall man försöker filtrera- Nu kan man inte lägga till ickepublika filer till ett möte
Post
-resolvern kräver inte auth längre, användare skyddas iUser
-resolver- CORS i dev accepterar allt nu
- Poster har nu det nullbara fältet
email
changePassword
mutation.
- Ändrat
User.userPostHistory
tillUser.postHistory
- Lagt till
current
som valbar parameter tillUser.postHistory
- Fixar att
Post.history
resolver returns history entry ID instead ofrefPost
id - Gömmer klass om förnamn innehåller phøs
- Lagt till cors igen fast endast för development.
username
ochemail
är nu alltid lowercase, och all input i API omvandlas till lowercase
requestPasswordReset
tar numera enresetLink
och enreturnTo
parameter som skickas vidare till användaren i mailet.
currentHolder
,current
i posthistorik-query används istället
User.fullName
- Nu har alla api en specifik ordning som de returneras i
File.api.ts
är så async den kan vara@types/node
är v16 vilket innebär att node måste minst vara 16- Många objekt som kunde vara null får inte vara det längre
Post.Mutation.addUsersToPost
returnerar enPost!
istället förBoolean!
Election.acceptedNominations
är alltid en lista- Default värden för docker compose till postgres databas
- CORS
- DataLoader för
currentHolder
- Lägger till
currentHolders
iPost
- Ser till att användare måste vara inloggade för att få tillgång till en
User
semail
ochphone
- Länkning för användare till inloggningsproviders
- Uppdaterat
UserAPI.searchUser
att inte vara case sensitive och söka bättre allmännt - Uppdaterat
FileAPI.searchFile
att inte vara case sensitive också for good measure
- Uppdaterat/lagt till auth-check på flera platser(!) i resolvers
- Default port är nu
3000
istället för3001
- Fixat lint
- Fixat med ci och rensat dependecies
- Files root och prod env fil
- Lägger till
type
iarticles
-query
- Fixar att tomma queries inte crashar
articles
-queries
- Flyttade
tools/migration
tillesek/infra-migration
-repot
prisma
är nytt sätt att hantera databasen- Tillhörande schemas till
prisma
postgresql
är ny hard dependency, även för dev- Flertalet index i
schema.prisma
(dvs. databasen) för nycklar som ofta förekommer i queries men sällan i mutations. - Numera används docker compose (via
docker-compose.yml
) för att hantera databas i utveckling/testning och CI - Nya utilities för testning, specifikt att generera användare/slumpmässiga användare i
test/utils/
knex
är inte längre dependency- SQL-filer (
src/sql/
) är borttagna; Allt sköts viaPrisma
- I flertalet graphql-schemas är olika ID:n bytade från
ID!
tillInt!
. Detta dåID!
blir till typenstring
i TypeScript, men vi använder det somAUTO_INCREMENT
i databasen ochnumber
i TS - Enums i GraphQL-schemas har nu konsekvent
UPPER_CASE
npm run generate
genererar nu både typer från GraphQL-schema ochPrismaClient
från prisma-schema.npm run graphql:generate
ersätter gamlanpm run generate
- I
election
harNO_ANSWER
ändrats tillNOT_ANSWERED
för tydlighet, ochNomination
har nuanswer
istället föraccepted
- Poster har nu ID och inte slugs, för att tillåta namn att ändras ordentligt.
addPost
returnerar numera en integer med det nya post-ID:t npm run generate
genererar nu både GQL och PrismaaddEmergencyContact
returnerar nu ID vid lyckad skapad kontakt, vilket matchar beteende för andra API:er- Flertalet GraphQL-mutations returnerar nu de skapade objekten, t.ex.
addPost
ochcreateElection
- API Nyckel tabell för att kunna använda API-nycklar i andra applikationer.
- Access API har blivit betydligt mycket enklare genom att det finns fördefinerade
roller i en enum döpt till
Feature
. Dörrar finns även i en enum vid namnDoor
. - EmergencyContacts ligger på user objektet
- Allt som har med Access mappings att göra.
- Doors api endpoint, detta ska lösas i en microservice.
- emergencyContacts queryn
- Api för att få hur många medlemmar på som går på sektionen
- Nytt sätt att benchmarka ekorre via
npm run benchmark
groupedPosts
prime:ar numeractx.postDataLoader
, vilket ser ut att öka prestanda- Ändrat till bätte API-anrop för att få full access till en user
latestElections
querien kan numera filtrera bort oöppnade val och val som har gömda nomineringar.
- Flyttat
graphql.generated.ts
frånsrc
->src/models/generated/graphql.ts
/src/errors/RequestErrors.ts
->src/errors/request.errors.ts
för enhetlighet- Path alias tillagt för:
@/
- Allting inomsrc
-mappen, t.ex.@/auth
@api
- Alla apier, t.ex.@api/file
@resolver
- Alla resolvers@db
- Alla databas-modeller@generated
- Genereade modeller i/src/models/generated
@dataloader
- Alla dataloaders@route
- Alla REST Routes@middleware
- Middlewares (måste prefixas med antingen/rest
eller/graphql
för att indikera vad det är för middleware)@service
- Servicar@test
- Filer inom/test
-mappen
- Jest använder
ts-jest
för att resolva aliasen ovan
removeArticle
-mutation- Integrationstester för
article
-resolvern - Ny test-util,
requestWithAuth
, som låter en skicka GraphQL-requests som samlar coverage. Bör troligen ersättaaxios
.
article
-resolver kräver inte längre användarnamn, utan använderctx.getUsername()
- Anrop till
app.listen()
flyttat tillsrc/index.ts
för attjest
ska fungera modifyArticle
ochremoveArticle
använder nuID!
istället förInt!
förarticleId
-parameternArticleAPI
s get-metoder uppdatera för att följa konventioner omNotFoundError
för enskilda icke funna artiklar och tomma listor för när man förfrågar för flera artiklar.app.ts
ochserverconfig.ts
flyttad tillsrc/app/
- Integrationstester, bl.a. för access
- Splittar
app.ts
iapp.ts
ochserverconfig.ts
för att utnyttja ApollosexecuteOperation
i nya intergrationstester test/regression
numera separat,test/integration/
ersätter viss funktionalitet
- Lagt till
wikiEdits
fält för användare WikiService
skapad för kommunikation mellan E-Wiki och Ekorre.
- Uppdaterat
Knex
typ 1 miljon versioner, och uppdaterat kod därefter - Bytt namn på
knex
-instansen tilldb
för att stödja nyaKNex
-namespaces
- När man byter profilbild så tas nu gamla profilbilden bort från databasen och filsystemet.
- Flyttar om i DataLoaders genom en ny sorterings-util,
sortBatchResult
.
tools/migration
för migreringsverktyg från gamla DBesek12
meeting
har nu även bilagor i form avappendix
för bakåtkompabilitetaddMeeting
returnerar nu ID på skapade mötet, liktcreateElection
- Efter diskussion kastar saker som är på formatet
[SomeType]!
i GraphQL-schemas 404, utan returnerar nu istället tomma listor.
- SetElection mutation för att skriva över elections
- Lägger till API för HeHE
- Begränsar antalet workers för
jest
för att SQLite inte ska låsa sig i testerna
- Uppdaterat deps
- Docker image nu Node 16
- Mindre ändringar och stavfel
- Sätter constraint att resolversen
login
ochcasLogin
aldrig kan ha en rad iAccessMapping
- Lägger till API för elections, se !69
notEmpty
util-filter
- Databastabell för nödkontakter
- Queries och Mutations för att hämta, lägga till och ta bort nödkontakter
- Tester för nödkontakter
- Mutation för att skicka mail med hjälp av ebrev
setUserPostEnd
-mutation för att sätta när personer går av sin postremoveHistoryEntry
-mutation för att ta bortHistoryEntry
smidnightTimestamp
-utility för att få timestamp för 00:00:00.000 och 23:59:59.999 på ettDate
removeUserFromPost
-mutation för att ta bort en användare från allaHistoryEntries
för en post
start
anses nu som permanent för enHistoryEntry
. Vill man ändra får man fan ta bort entrien.
- Lägger till
numberOfVolunteers
som beräknar antalet unika funktionärer - Lägger till tester för ovanstående
period
inte längre än del avPost
start
ochend
sparas nu somTIMESTAMP
iPostHistory
- Aktiverar
FOREIGN KEY
i sqlite genom knex - Fixar tester som gick sönder av ovanstående
- Återinför GraphQL playground, bör ersättas med GraphiQL i framtiden
- Query för gruppering av poster
Meetings
-tabell i databasen- API för möten, inklusive mötesfiler
- Standardlösning för auth
- Tabeller för access och auth
graphql-middleware
för tabellbaserad auth
- Standardiserad felhantering i API:er
- Automatisk testning i form av
ts-jest
- Uppdaterad CI för testning
- Möjlighet att köra
build
-CI på GitLab genom-run-build
-suffix på branchnamn - DataLoaders för flertalet resurser
Files
-tabell i databasen- REST Endpoint för filuppladdning, default på
{baseUrl}/files/upload
- Hosting för statiska filer, default på
{baseUrl}/files/*
- API för CRUD för filer
- Apollo körs numera ovanpå express på
/
- Se !13 för mer info
- Initskript för att enklare kunna böjra arbeta med projektet
- SEMVER
- Ändrat miljövariablen
port
->PORT
för att vara konsekvent - Ändrat standardport
3000
->5000
för att funka bättre med ekollon - Uppdaterat npm skript till att funka på windows
- Hela projektet, kolla git historik för mer info...