diff --git a/src/config/db.ts b/src/config/db.ts new file mode 100644 index 0000000..56415f8 --- /dev/null +++ b/src/config/db.ts @@ -0,0 +1,23 @@ +import { connect } from 'mongoose' +import { config } from 'dotenv' + +config() + +export default async function connectDB() { + try { + await connect( + process.env.MONGODB_URI, + { + useNewUrlParser: true, + useUnifiedTopology: true, + useFindAndModify: false, + useCreateIndex: true + } + ) + + console.log('MongoDB Connected') + } catch (err) { + console.error(err.message) + process.exit(1) + } +} diff --git a/src/models/LedgerUpdate.ts b/src/models/LedgerUpdate.ts new file mode 100644 index 0000000..ca67dd9 --- /dev/null +++ b/src/models/LedgerUpdate.ts @@ -0,0 +1,14 @@ +import { model, Schema, Model, Document } from "mongoose"; + +interface ILedgerUpdate extends Document { + modifiedAt: number +} + +const LedgerUpdateSchema: Schema = new Schema({ + modifiedAt: { type: Number } +}, { + versionKey: false +}); + +const LedgerUpdate: Model = model("LedgerUpdate", LedgerUpdateSchema); +export default LedgerUpdate; diff --git a/src/models/User.ts b/src/models/User.ts new file mode 100644 index 0000000..32ec063 --- /dev/null +++ b/src/models/User.ts @@ -0,0 +1,27 @@ +import { model, Schema, Model, Document } from "mongoose"; + +export interface IUser extends Document { + discordId: string, + address: string, + username: string, + github: string, + discourse: string, + modifiedAt: number, + createdAt: number +} + +const UserSchema: Schema = new Schema({ + discordId: { type: String, unique: true, required: true, dropDups: true }, + username: { type: String, unique: true, required: true, dropDups: true }, + discourse: { type: String }, + github: { type: String }, + address: { type: String, unique: true }, + modifiedAt: { type: Number }, + createdAt: { type: Number, default: Date.now() } +}, { + versionKey: false, + _id: false +}); + +const User: Model = model("User", UserSchema); +export default User;