You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

50 lines
1.3 KiB

// core-node.js
// Copyright (C) 2022 DTP Technologies, LLC
// License: Apache-2.0
'use strict';
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const CoreNodeSchema = new Schema({
created: { type: Date, default: Date.now, required: true, index: 1 },
updated: { type: Date, default: Date.now, required: true, index: 1 },
address: {
host: { type: String, required: true },
port: { type: Number, default: 443, min: 1, max: 65535, required: true },
},
flags: {
isConnected: { type: Boolean, default: false, required: true, index: 1 },
isBlocked: { type: Boolean, default: false, required: true, index: 1 },
},
oauth: {
clientId: { type: Schema.ObjectId },
clientSecret: { type: String },
scopes: { type: [String] },
redirectUri: { type: String },
},
kaleidoscope: {
token: { type: String },
},
meta: {
name: { type: String },
description: { type: String },
domain: { type: String },
domainKey: { type: String },
version: { type: String },
admin: { type: String },
supportEmail: { type: String },
},
});
CoreNodeSchema.index({
'address.host': 1,
'address.port': 1,
}, {
name: 'core_address_idx',
});
module.exports = (conn) => {
return conn.model('CoreNode', CoreNodeSchema);
};