diff --git a/server/factories/event_sponsor.factory.ts b/server/factories/event_sponsor.factory.ts new file mode 100644 index 0000000000..b0a6b286a9 --- /dev/null +++ b/server/factories/event_sponsor.factory.ts @@ -0,0 +1,20 @@ +import Faker from 'faker'; +import { define } from 'typeorm-seeding'; + +import { EventSponsor } from '../models/EventSponsor'; +import { Event } from '../models/Event'; +import { Sponsor } from '../models/Sponsor'; + +define(EventSponsor, ( + _faker: typeof Faker, + params: { event: Event; sponsor: Sponsor }, +) => { + const { event, sponsor } = params; + + const eventSponsor = new EventSponsor({ + sponsor, + event, + }); + + return eventSponsor; +}); diff --git a/server/factories/rsvp.factory.ts b/server/factories/rsvp.factory.ts new file mode 100644 index 0000000000..b65be74046 --- /dev/null +++ b/server/factories/rsvp.factory.ts @@ -0,0 +1,22 @@ +import Faker from 'faker'; +import { define } from 'typeorm-seeding'; + +import { Rsvp } from '../models/Rsvp'; +import { Event } from '../models/Event'; +import { User } from '../models/User'; + +define(Rsvp, (faker: typeof Faker, params: { user: User; event: Event }) => { + const { user, event } = params; + + const date = faker.date.future(); + const on_waitlist = faker.random.boolean(); + + const rsvp = new Rsvp({ + date, + on_waitlist, + user, + event, + }); + + return rsvp; +}); diff --git a/server/factories/social_provider.factory.ts b/server/factories/social_provider.factory.ts new file mode 100644 index 0000000000..32581fed56 --- /dev/null +++ b/server/factories/social_provider.factory.ts @@ -0,0 +1,12 @@ +import Faker from 'faker'; +import { define } from 'typeorm-seeding'; + +import { SocialProvider } from '../models/SocialProvider'; + +define(SocialProvider, (_faker: typeof Faker) => { + const socialProvider = new SocialProvider({ + name: 'gauth', + }); + + return socialProvider; +}); diff --git a/server/factories/social_provider_user.factory.ts b/server/factories/social_provider_user.factory.ts new file mode 100644 index 0000000000..77c4a1081a --- /dev/null +++ b/server/factories/social_provider_user.factory.ts @@ -0,0 +1,20 @@ +import Faker from 'faker'; +import { define } from 'typeorm-seeding'; + +import { SocialProviderUser } from '../models/SocialProviderUser'; +import { SocialProvider } from '../models/SocialProvider'; +import { User } from '../models/User'; + +define(SocialProviderUser, ( + _faker: typeof Faker, + params: { user: User; socialProvider: SocialProvider }, +) => { + const { user, socialProvider } = params; + + const socialProviderUser = new SocialProviderUser({ + user, + socialProvider, + }); + + return socialProviderUser; +}); diff --git a/server/factories/sponsor.factory.ts b/server/factories/sponsor.factory.ts new file mode 100644 index 0000000000..3fa2d52a46 --- /dev/null +++ b/server/factories/sponsor.factory.ts @@ -0,0 +1,22 @@ +import Faker from 'faker'; +import { define } from 'typeorm-seeding'; + +import { Sponsor } from '../models/Sponsor'; +import { SponsorTypes } from '../../types/SponsorTypes'; +import { randomEnum } from '../util/Utilities'; + +define(Sponsor, (faker: typeof Faker) => { + const name = faker.company.companyName(); + const website = faker.internet.url(); + const logoPath = faker.system.commonFileName('png'); + const type = String(randomEnum(SponsorTypes)); + + const sponsor = new Sponsor({ + name, + website, + logoPath, + type, + }); + + return sponsor; +}); diff --git a/server/factories/tag.factory.ts b/server/factories/tag.factory.ts new file mode 100644 index 0000000000..e3a8e8f48a --- /dev/null +++ b/server/factories/tag.factory.ts @@ -0,0 +1,18 @@ +import Faker from 'faker'; +import { define } from 'typeorm-seeding'; + +import { Tag } from '../models/Tag'; +import { Event } from '../models/Event'; + +define(Tag, (faker: typeof Faker, params: { event: Event }) => { + const { event } = params; + + const name = faker.company.companyName(); + + const tag = new Tag({ + name, + event, + }); + + return tag; +}); diff --git a/server/factories/user.factory.ts b/server/factories/user.factory.ts index 922068abae..f16ccbf960 100644 --- a/server/factories/user.factory.ts +++ b/server/factories/user.factory.ts @@ -3,11 +3,11 @@ import { define } from 'typeorm-seeding'; import { User } from '../models/User'; define(User, (faker: typeof Faker) => { - const location = new User({ + const user = new User({ email: faker.internet.email(), first_name: faker.name.firstName(), last_name: faker.name.lastName(), }); - return location; + return user; }); diff --git a/server/factories/user_ban.factory.ts b/server/factories/user_ban.factory.ts new file mode 100644 index 0000000000..f5aa3f29eb --- /dev/null +++ b/server/factories/user_ban.factory.ts @@ -0,0 +1,20 @@ +import Faker from 'faker'; +import { define } from 'typeorm-seeding'; + +import { UserBan } from '../models/UserBan'; +import { Chapter } from '../models/Chapter'; +import { User } from '../models/User'; + +define(UserBan, ( + _faker: typeof Faker, + params: { user: User; chapter: Chapter }, +) => { + const { user, chapter } = params; + + const userBan = new UserBan({ + user, + chapter, + }); + + return userBan; +}); diff --git a/server/factories/user_chapter.factory.ts b/server/factories/user_chapter.factory.ts new file mode 100644 index 0000000000..76ab11fa76 --- /dev/null +++ b/server/factories/user_chapter.factory.ts @@ -0,0 +1,20 @@ +import Faker from 'faker'; +import { define } from 'typeorm-seeding'; + +import { UserChapter } from '../models/UserChapter'; +import { Chapter } from '../models/Chapter'; +import { User } from '../models/User'; + +define(UserChapter, ( + _faker: typeof Faker, + params: { user: User; chapter: Chapter }, +) => { + const { user, chapter } = params; + + const userChapter = new UserChapter({ + user, + chapter, + }); + + return userChapter; +}); diff --git a/server/seeds/1_user.seed.ts b/server/seeds/000_user.seed.ts similarity index 100% rename from server/seeds/1_user.seed.ts rename to server/seeds/000_user.seed.ts diff --git a/server/seeds/2_location.seed.ts b/server/seeds/001_location.seed.ts similarity index 100% rename from server/seeds/2_location.seed.ts rename to server/seeds/001_location.seed.ts diff --git a/server/seeds/3_chapter.seed.ts b/server/seeds/002_chapter.seed.ts similarity index 100% rename from server/seeds/3_chapter.seed.ts rename to server/seeds/002_chapter.seed.ts diff --git a/server/seeds/4_venue.seed.ts b/server/seeds/003_venue.seed.ts similarity index 100% rename from server/seeds/4_venue.seed.ts rename to server/seeds/003_venue.seed.ts diff --git a/server/seeds/5_events.seed.ts b/server/seeds/004_events.seed.ts similarity index 100% rename from server/seeds/5_events.seed.ts rename to server/seeds/004_events.seed.ts diff --git a/server/seeds/005_sponsor.seed.ts b/server/seeds/005_sponsor.seed.ts new file mode 100644 index 0000000000..ba1561b270 --- /dev/null +++ b/server/seeds/005_sponsor.seed.ts @@ -0,0 +1,8 @@ +import { Factory, Seeder } from 'typeorm-seeding'; +import { Sponsor } from '../models/Sponsor'; + +export default class CreateSponsors implements Seeder { + public async run(factory: Factory): Promise { + await factory(Sponsor)().seedMany(5); + } +} diff --git a/server/seeds/006_tag.seed.ts b/server/seeds/006_tag.seed.ts new file mode 100644 index 0000000000..35f04ba6d6 --- /dev/null +++ b/server/seeds/006_tag.seed.ts @@ -0,0 +1,12 @@ +import { Factory, Seeder } from 'typeorm-seeding'; + +import { Tag } from '../models/Tag'; +import { Event } from '../models/Event'; + +export default class CreateTags implements Seeder { + public async run(factory: Factory): Promise { + const event = await Event.findOne(); + + await factory(Tag)({ event }).seedMany(5); + } +} diff --git a/server/seeds/007_user_ban.seed.ts b/server/seeds/007_user_ban.seed.ts new file mode 100644 index 0000000000..3b1c3b492c --- /dev/null +++ b/server/seeds/007_user_ban.seed.ts @@ -0,0 +1,14 @@ +import { Factory, Seeder } from 'typeorm-seeding'; + +import { Chapter } from '../models/Chapter'; +import { User } from '../models/User'; +import { UserBan } from '../models/UserBan'; + +export default class CreateUserBans implements Seeder { + public async run(factory: Factory): Promise { + const user = await User.findOne(); + const chapter = await Chapter.findOne(); + + await factory(UserBan)({ user, chapter }).seedMany(5); + } +} diff --git a/server/seeds/008_user_chapter.seed.ts b/server/seeds/008_user_chapter.seed.ts new file mode 100644 index 0000000000..092fb91f06 --- /dev/null +++ b/server/seeds/008_user_chapter.seed.ts @@ -0,0 +1,14 @@ +import { Factory, Seeder } from 'typeorm-seeding'; + +import { Chapter } from '../models/Chapter'; +import { User } from '../models/User'; +import { UserChapter } from '../models/UserChapter'; + +export default class CreateUserChapter implements Seeder { + public async run(factory: Factory): Promise { + const user = await User.findOne(); + const chapter = await Chapter.findOne(); + + await factory(UserChapter)({ user, chapter }).seedMany(5); + } +} diff --git a/server/seeds/009_social_provider.seed.ts b/server/seeds/009_social_provider.seed.ts new file mode 100644 index 0000000000..f420480cad --- /dev/null +++ b/server/seeds/009_social_provider.seed.ts @@ -0,0 +1,9 @@ +import { Factory, Seeder } from 'typeorm-seeding'; + +import { SocialProvider } from '../models/SocialProvider'; + +export default class CreateSocialProvider implements Seeder { + public async run(factory: Factory): Promise { + await factory(SocialProvider)().seedMany(5); + } +} diff --git a/server/seeds/010_social_provider_users.seed.ts b/server/seeds/010_social_provider_users.seed.ts new file mode 100644 index 0000000000..0a0307bb4f --- /dev/null +++ b/server/seeds/010_social_provider_users.seed.ts @@ -0,0 +1,17 @@ +import { Factory, Seeder } from 'typeorm-seeding'; + +import { SocialProvider } from '../models/SocialProvider'; +import { User } from '../models/User'; +import { SocialProviderUser } from '../models/SocialProviderUser'; + +export default class CreateSocialProviderUser implements Seeder { + public async run(factory: Factory): Promise { + const user = await User.findOne(); + const socialProvider = await SocialProvider.findOne(); + + await factory(SocialProviderUser)({ + user, + socialProvider, + }).seedMany(5); + } +} diff --git a/server/seeds/011_rsvp.seed.ts b/server/seeds/011_rsvp.seed.ts new file mode 100644 index 0000000000..082c414d87 --- /dev/null +++ b/server/seeds/011_rsvp.seed.ts @@ -0,0 +1,14 @@ +import { Factory, Seeder } from 'typeorm-seeding'; + +import { Event } from '../models/Event'; +import { User } from '../models/User'; +import { Rsvp } from '../models/Rsvp'; + +export default class CreateRsvp implements Seeder { + public async run(factory: Factory): Promise { + const user = await User.findOne(); + const event = await Event.findOne(); + + await factory(Rsvp)({ user, event }).seedMany(5); + } +} diff --git a/server/seeds/012_event_sponsor.seed.ts b/server/seeds/012_event_sponsor.seed.ts new file mode 100644 index 0000000000..d487c5c9d6 --- /dev/null +++ b/server/seeds/012_event_sponsor.seed.ts @@ -0,0 +1,14 @@ +import { Factory, Seeder } from 'typeorm-seeding'; + +import { EventSponsor } from '../models/EventSponsor'; +import { Event } from '../models/Event'; +import { Sponsor } from '../models/Sponsor'; + +export default class CreateEventSponsor implements Seeder { + public async run(factory: Factory): Promise { + const event = await Event.findOne(); + const sponsor = await Sponsor.findOne(); + + await factory(EventSponsor)({ event, sponsor }).seedMany(5); + } +} diff --git a/server/util/Utilities.ts b/server/util/Utilities.ts index 95b9d3b9cd..8182fae7ba 100644 --- a/server/util/Utilities.ts +++ b/server/util/Utilities.ts @@ -3,3 +3,12 @@ export default class Utilities { return !values.filter((val: any) => !val && val !== 0).length; } } + +export const randomEnum = (anEnum: T): T[keyof T] => { + const enumValues = (Object.keys(anEnum) + .map(n => Number.parseInt(n)) + .filter(n => !Number.isNaN(n)) as unknown) as T[keyof T][]; + const randomIndex = Math.floor(Math.random() * enumValues.length); + const randomEnumValue = anEnum[randomIndex]; + return randomEnumValue; +}; diff --git a/types/SponsorTypes.ts b/types/SponsorTypes.ts new file mode 100644 index 0000000000..d190e851fb --- /dev/null +++ b/types/SponsorTypes.ts @@ -0,0 +1,5 @@ +export enum SponsorTypes { + 'FOOD', + 'VENUE', + 'OTHER', +}