Design Dao test frameworkMove utils classes to a Utils folderApiValidator methods for Attendee fieldscreate base exception classload_attendees Dao methodbuiltins variable names. change other tests to use new fetchall patterntest attendee dao methodstest user filtertest attendee validatorquery to load events by attendeeDAO methods should use fetch one unless it is a many-type queryfactory that provides DOAs and Services based on environmentabstract DAO to initialize psycopg2wire provider to servicesunified API for service methods. All should accept raw request.finish testing event serviceservices should return a fully populated request objectfinish AttendeeServicetest AttendeeServiceadd rest of attendee methods to APIdecide if all attendees will be unique.yes, easier to pair users with their event availability.cookies will contain event id and attendee id pair
design availability mechanismnew service? yesintegrate with attendee service? no
availability validator w/ year mechanismtabs to spacesfile and class names should match python conventions.base DAO should use provider for psycopg2 instance.Dependency provider needs new logic so apply file naming convention to supplied class name.build config file and import in each class. Config to include:DB name/credspackage names for dev/test/prodpossible clean up of packages
- document the api
- built react front end
- ensure uniform structure in tests, services, and validators
- find way to test provider in production mode
- Script to test DB load/save queries
/events
- GET - Returns all events (see response object)
- POST - Creates a new event (see request/response objects)
- PUT - Not used
- DELETE - Not used
/events/{id}
- GET - Returns the event details (see response object)
- POST - not used
- PUT - Updates this event
- DELETE - Deletes this event
{
name: String,
creator: String
}
{
id: String,
name: String,
creator: String,
created_date: date
}
/events/{id}/attendees
- GET - Returns all attendees for this event (see response object)
- POST - Creates a new attendee for this event (see request/response objects)
- PUT - Not used
- DELETE - Not used
/events/{id}/attendees/{id}
- GET - Returns the attendee details (see response object)
- POST - not used
- PUT - Updates this attendee
- DELETE - deletes this attendee and removes it them from the event
{
name: String,
email: String (optional)
}
{
id: int,
name: String,
email: String
}
/events/{id}/attendees/{id}/availability
- GET - Returns compiled availability for this attendee (see response object)
- POST - Creates a new availability for this event (see request/response objects)
- PUT - Not used
- DELETE - Not used
/events/{id}/attendees/{id}/availability/{id}
- GET - Returns the availability details (see response object)
- POST - not used
- PUT - Updates this availability
- DELETE - Deletes this availability
{
attendee_name: String,
year: String
}
{
id: String,
event_id: String,
attendee_id: String,
year: String,
january: String,
february: String,
march: String,
april: String,
may: String,
june: String,
july: String,
august: String,
september: String,
october: String,
november: String,
december: String
}