@coko/server
Version:
Reusable server for use by Coko's projects
95 lines • 3.05 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const base_model_1 = __importDefault(require("../base.model"));
const user_model_1 = __importDefault(require("../user/user.model"));
const types_1 = require("../_helpers/types");
class Identity extends base_model_1.default {
email;
isDefault;
isSocial;
isVerified;
oauthAccessToken;
oauthAccessTokenExpiration;
oauthRefreshToken;
oauthRefreshTokenExpiration;
profileData;
provider;
userId;
verificationToken;
verificationTokenTimestamp;
user;
constructor() {
super();
this.type = 'identity';
}
static get tableName() {
return 'identities';
}
static get schema() {
return {
type: 'object',
required: ['email', 'userId'],
properties: {
email: types_1.email,
isDefault: types_1.boolean,
isSocial: types_1.boolean,
isVerified: types_1.boolean,
oauthAccessToken: types_1.stringNullable,
oauthAccessTokenExpiration: types_1.dateNullable,
oauthRefreshToken: types_1.stringNullable,
oauthRefreshTokenExpiration: types_1.dateNullable,
profileData: types_1.object,
provider: types_1.stringNullable,
userId: types_1.id,
verificationToken: types_1.stringNullable,
verificationTokenTimestamp: types_1.dateNullable,
},
};
}
static get relationMappings() {
return {
user: {
relation: base_model_1.default.BelongsToOneRelation,
modelClass: user_model_1.default,
join: {
from: 'identities.userId',
to: 'users.id',
},
},
};
}
$formatDatabaseJson(json) {
json = super.$formatDatabaseJson(json);
if (json.email) {
return {
...json,
email: json.email.toLowerCase(),
};
}
return json;
}
static formatIncomingQueryData(data) {
let parsedData = { ...data };
const emailValue = data.email;
if (emailValue && typeof emailValue === 'string') {
parsedData = {
...data,
email: emailValue.toLowerCase(),
};
}
return parsedData;
}
static async find(data, options = {}) {
const parsedData = Identity.formatIncomingQueryData(data);
return super.find(parsedData, options);
}
static async findOne(data, options = {}) {
const parsedData = Identity.formatIncomingQueryData(data);
return super.findOne(parsedData, options);
}
}
exports.default = Identity;
//# sourceMappingURL=identity.model.js.map