chore: revert #1794 for now until permanent init architecture is established

This commit is contained in:
James
2023-01-11 09:32:44 -05:00
parent 96002dbda5
commit 047efe02ff
7 changed files with 58 additions and 36 deletions

View File

@@ -25,25 +25,24 @@ payload.init({
secret: 'PAYLOAD_SECRET_KEY',
mongoURL: 'mongodb://localhost/payload',
express: app,
onInit: async () => {
const router = express.Router();
});
router.use(payload.authenticate); // highlight-line
const router = express.Router();
router.get('/', (req, res) => {
if (req.user) {
return res.send(`Authenticated successfully as ${req.user.email}.`);
}
router.use(payload.authenticate); // highlight-line
return res.send('Not authenticated');
});
router.get('/', (req, res) => {
if (req.user) {
return res.send(`Authenticated successfully as ${req.user.email}.`);
}
app.use('/some-route-here', router);
return res.send('Not authenticated');
});
app.listen(3000, async () => {
payload.logger.info(`listening on ${3000}...`);
});
},
app.use('/some-route-here', router);
app.listen(3000, async () => {
payload.logger.info(`listening on ${3000}...`);
});
```

View File

@@ -66,7 +66,7 @@ app.listen(3000, async () => {
});
```
This server doesn't do anything just yet. But, after you have this in place, we can initialize Payload via its `init()` method, which accepts a small set of arguments to tell it how to operate. For a full list of `init` arguments, please consult the [main configuration](/docs/configuration/overview) docs.
This server doesn't do anything just yet. But, after you have this in place, we can initialize Payload via its `init()` method, which accepts a small set of arguments to tell it how to operate. For a full list of `init` arguments, please consult the [main configuration](/docs/configuration/overview#init) docs.
To initialize Payload, update your `server.js` file to reflect the following code:
@@ -80,13 +80,12 @@ payload.init({
secret: 'SECRET_KEY',
mongoURL: 'mongodb://localhost/payload',
express: app,
onInit: () => {
app.listen(3000, async () => {
console.log('Express is now listening for incoming connections on port 3000.')
});
}
})
app.listen(3000, async () => {
console.log('Express is now listening for incoming connections on port 3000.')
});
```
Here is a list of all properties available to pass through `payload.init`:

View File

@@ -5,11 +5,11 @@ import Logger from '../utilities/logger';
import loadConfig from '../config/load';
import payload from '..';
export async function generateGraphQLSchema(): Promise<void> {
export function generateGraphQLSchema(): void {
const logger = Logger();
const config = loadConfig();
await payload.init({
payload.init({
secret: '--unused--',
mongoURL: false,
local: true,

View File

@@ -44,7 +44,7 @@ import { Result as ResetPasswordResult } from './auth/operations/resetPassword';
import { Result as LoginResult } from './auth/operations/login';
import { Options as FindGlobalOptions } from './globals/operations/local/findOne';
import { Options as UpdateGlobalOptions } from './globals/operations/local/update';
import { initPayload } from './init';
import { initSync, initAsync } from './init';
require('isomorphic-fetch');
@@ -121,8 +121,12 @@ export class Payload {
* @description Initializes Payload
* @param options
*/
async init(options: InitOptions): Promise<void> {
await initPayload(this, options);
init(options: InitOptions): void {
initSync(this, options);
}
async initAsync(options: InitOptions): Promise<void> {
await initAsync(this, options);
}
getAdminURL = (): string => `${this.config.serverURL}${this.config.routes.admin}`;

View File

@@ -33,15 +33,7 @@ import mountEndpoints from './express/mountEndpoints';
import PreferencesModel from './preferences/model';
import findConfig from './config/find';
export const initPayload = async (payload: Payload, options: InitOptions): Promise<void> => {
payload.logger = Logger('payload', options.loggerOptions);
payload.mongoURL = options.mongoURL;
if (payload.mongoURL) {
mongoose.set('strictQuery', false);
payload.mongoMemoryServer = await connectMongoose(payload.mongoURL, options.mongoOptions, payload.logger);
}
export const init = (payload: Payload, options: InitOptions): void => {
payload.logger.info('Starting Payload...');
if (!options.secret) {
throw new Error(
@@ -153,7 +145,34 @@ export const initPayload = async (payload: Payload, options: InitOptions): Promi
}
serverInitTelemetry(payload);
};
export const initAsync = async (payload: Payload, options: InitOptions): Promise<void> => {
payload.logger = Logger('payload', options.loggerOptions);
payload.mongoURL = options.mongoURL;
if (payload.mongoURL) {
mongoose.set('strictQuery', false);
payload.mongoMemoryServer = await connectMongoose(payload.mongoURL, options.mongoOptions, payload.logger);
}
init(payload, options);
if (typeof options.onInit === 'function') await options.onInit(payload);
if (typeof payload.config.onInit === 'function') await payload.config.onInit(payload);
};
export const initSync = (payload: Payload, options: InitOptions): void => {
payload.logger = Logger('payload', options.loggerOptions);
payload.mongoURL = options.mongoURL;
if (payload.mongoURL) {
mongoose.set('strictQuery', false);
connectMongoose(payload.mongoURL, options.mongoOptions, payload.logger);
}
init(payload, options);
if (typeof options.onInit === 'function') options.onInit(payload);
if (typeof payload.config.onInit === 'function') payload.config.onInit(payload);
};

View File

@@ -4,8 +4,9 @@ import { v4 as uuid } from 'uuid';
import payload from '../src';
const expressApp = express();
const init = async () => {
await payload.init({
await payload.initAsync({
secret: uuid(),
mongoURL: process.env.MONGO_URL || 'mongodb://localhost/payload',
express: expressApp,

View File

@@ -40,7 +40,7 @@ export async function initPayloadTest(options: Options): Promise<{ serverURL: st
initOptions.express = express();
}
await payload.init(initOptions);
await payload.initAsync(initOptions);
if (initOptions.express) {
initOptions.express.listen(port);