diff options
| author | Raphael Kabo <raphaelkabo@hey.com> | 2023-05-12 16:54:06 +0100 | 
|---|---|---|
| committer | Raphael Kabo <raphaelkabo@hey.com> | 2023-05-12 16:54:06 +0100 | 
| commit | bfe708d48f603998a1f2c4cad4a6f9f8683dc18f (patch) | |
| tree | bc0402abb6fd999f00e2b180144a34c851e36abf /src/models | |
| parent | 69b4c854b399554ed413cc7ff9d625aee5053927 (diff) | |
Migrate to Typescript
Diffstat (limited to 'src/models')
| -rwxr-xr-x | src/models/Event.js | 254 | ||||
| -rwxr-xr-x | src/models/EventGroup.js | 57 | ||||
| -rwxr-xr-x | src/models/Log.js | 26 | 
3 files changed, 337 insertions, 0 deletions
diff --git a/src/models/Event.js b/src/models/Event.js new file mode 100755 index 0000000..d800077 --- /dev/null +++ b/src/models/Event.js @@ -0,0 +1,254 @@ +const mongoose = require('mongoose'); + +const Attendees = new mongoose.Schema({ +  name: { +    type: String, +    trim: true +  }, +  status: { +    type: String, +    trim: true +  }, +  email: { +    type: String, +    trim: true +  }, +  removalPassword: { +    type: String, +    trim: true, +    unique: true, +    sparse: true, +  }, +  id: { +    type: String, +    trim: true, +    unique: true, +    sparse: true, +  }, +  // The number of people that are attending under one 'attendee' object +  number: { +    type: Number, +    trim: true, +    default: 1 +  }, +  created: Date, +}) + +const Followers = new mongoose.Schema({ +  // this is the id of the original follow *request*, which we use to validate Undo events +  followId: { +    type: String, +    trim: true +  }, +  // this is the actual remote user profile id +  actorId: { +    type: String, +    trim: true +  }, +  // this is the stringified JSON of the entire user profile +  actorJson: { +    type: String, +    trim: true +  }, +  name: { +    type: String, +    trim: true +  }, +}, { _id: false }) + +const ReplySchema = new mongoose.Schema({ +  id: { +    type: String, +    required: true, +    unique: true, +    sparse: true +  }, +  author: { +    type: String, +    trim: true, +    required: true +  }, +  content: { +    type: String, +    trim: true, +    required: true +  }, +  timestamp: { +    type: Date, +    trim: true, +    required: true +  } +}) + +const ActivityPubMessages = new mongoose.Schema({ +  id: { +    type: String, +    required: true, +    unique: true, +    sparse: true +  }, +  content: { +    type: String, +    trim: true, +    required: true +  } +}) + +const CommentSchema = new mongoose.Schema({ +  id: { +    type: String, +    required: true, +    unique: true, +    sparse: true +  }, +  author: { +    type: String, +    trim: true, +    required: true +  }, +  content: { +    type: String, +    trim: true, +    required: true +  }, +  timestamp: { +    type: Date, +    trim: true, +    required: true +  }, +  activityJson: { +    type: String, +    trim: true +  }, +  actorJson: { +    type: String, +    trim: true +  }, +  activityId: { +    type: String, +    trim: true +  }, +  actorId: { +    type: String, +    trim: true +  }, +  replies: [ReplySchema] +}) + +const EventSchema = new mongoose.Schema({ +  id: { +    type: String, +    required: true, +    unique: true +  }, +  type: { +    type: String, +    trim: true, +    required: true +  }, +  name: { +    type: String, +    trim: true, +    required: true +  }, +  location: { +    type: String, +    trim: true, +    required: true +  }, +  start: { // Stored as a UTC timestamp +    type: Date, +    trim: true, +    required: true +  }, +  end: { // Stored as a UTC timestamp +    type: Date, +    trim: true, +    required: true +  }, +  timezone: { +    type: String, +    default: 'Etc/UTC' +  }, +  description: { +    type: String, +    trim: true, +    required: true +  }, +  image: { +    type: String, +    trim: true +  }, +  url: { +    type: String, +    trim: true +  }, +  creatorEmail: { +    type: String, +    trim: true +  }, +  hostName: { +    type: String, +    trim: true +  }, +  viewPassword: { +    type: String, +    trim: true +  }, +  editPassword: { +    type: String, +    trim: true +  }, +  editToken: { +    type: String, +    trim: true, +    minlength: 32, +    maxlength: 32 +  }, +  eventGroup: { type: mongoose.Schema.Types.ObjectId, ref: 'EventGroup' }, +  usersCanAttend: { +    type: Boolean, +    trim: true, +    default: false +  }, +  showUsersList: { +    type: Boolean, +    trim: true, +    default: false +  }, +  usersCanComment: { +    type: Boolean, +    trim: true, +    default: false +  }, +  firstLoad: { +    type: Boolean, +    trim: true, +    default: true +  }, +  attendees: [Attendees], +  maxAttendees: { +    type: Number +  }, +  comments: [CommentSchema], +  activityPubActor: { +    type: String, +    trim: true +  }, +  activityPubEvent: { +    type: String, +    trim: true +  }, +  publicKey: { +    type: String, +    trim: true +  }, +  privateKey: { +    type: String, +    trim: true +  }, +  followers: [Followers], +  activityPubMessages: [ActivityPubMessages] +}); + +module.exports = mongoose.model('Event', EventSchema); diff --git a/src/models/EventGroup.js b/src/models/EventGroup.js new file mode 100755 index 0000000..c70ef95 --- /dev/null +++ b/src/models/EventGroup.js @@ -0,0 +1,57 @@ +const mongoose = require('mongoose'); + +const Subscriber = new mongoose.Schema({ +  email: { +    type: String, +    trim: true +  }, +}) + +const EventGroupSchema = new mongoose.Schema({ +  id: { +    type: String, +    required: true, +    unique: true +  }, +  name: { +    type: String, +    trim: true, +    required: true +  }, +  description: { +    type: String, +    trim: true, +    required: true +  }, +  image: { +    type: String, +    trim: true +  }, +  url: { +    type: String, +    trim: true +  }, +  creatorEmail: { +    type: String, +    trim: true +  }, +  hostName: { +    type: String, +    trim: true +  }, +  editToken: { +    type: String, +    trim: true, +    minlength: 32, +    maxlength: 32 +  }, +  firstLoad: { +    type: Boolean, +    trim: true, +    default: true +  }, +  events: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Event' }], +  subscribers: [Subscriber], +}); + +module.exports = mongoose.model('EventGroup', EventGroupSchema); diff --git a/src/models/Log.js b/src/models/Log.js new file mode 100755 index 0000000..95a3ab3 --- /dev/null +++ b/src/models/Log.js @@ -0,0 +1,26 @@ +const mongoose = require('mongoose'); + +const LogSchema = new mongoose.Schema({ +  status: { +    type: String, +    trim: true, +    required: true +  }, +  process: { +    type: String, +    trim: true, +    required: true +  }, +  message: { +    type: String, +    trim: true, +    required: true +  }, +  timestamp: { +    type: Date, +    trim: true, +    required: true +  } +}); + +module.exports = mongoose.model('Log', LogSchema);  | 
