Add initial firebase connection logic

This commit is contained in:
2021-04-09 21:26:57 -05:00
parent c56f0706a4
commit b0123afee8
10 changed files with 1039 additions and 33 deletions

View File

@@ -1,17 +1,17 @@
import {Config, Controllers, HTTPServer, Files, Middlewares, Routing, Unit} from '@extollo/lib'
import {Database, Models} from "@extollo/orm";
import {CommandLine} from "@extollo/cli";
import {Internationalization} from "@extollo/i18n";
import {FirebaseUnit} from "./app/units/FirebaseUnit";
export const Units = [
Config,
FirebaseUnit,
Files,
CommandLine,
Controllers,
Middlewares,
Database,
Models,
Internationalization,
Routing,
HTTPServer,

View File

@@ -1,5 +1,15 @@
import { env } from '@extollo/lib'
import * as fs from "fs"
export default {
name: env('APP_NAME', 'Extollo'),
firebase: {
credentials: JSON.parse(
fs.readFileSync(env('FIREBASE_CREDENTIALS'))
.toString('utf-8')
),
defaultRTDB: env('FIREBASE_DEFAULT_RTDB', 'https://loc-chain-default-rtdb.firebaseio.com'),
}
}

View File

@@ -1,21 +1,16 @@
import {Controller, view, Session} from '@extollo/lib';
import {Inject, Injectable} from "@extollo/di";
import {Locale} from "@extollo/i18n"
@Injectable()
export class Home extends Controller {
@Inject()
protected readonly session!: Session;
@Inject()
protected readonly locale!: Locale;
public welcome() {
this.session.set('app_visits', this.session.get('app_visits', 0) + 1)
return view('welcome', {
app_visits: this.session.get('app_visits'),
locale: this.locale.helper(),
})
}
}

View File

@@ -0,0 +1,37 @@
import {Singleton, Inject} from "@extollo/di"
import {Unit, Logging, Config} from "@extollo/lib"
import * as firebase from "firebase-admin"
/**
* FirebaseUnit Unit
* ---------------------------------------
* Fetch credentials from config and setup the firebase-admin connection.
*/
@Singleton()
export class FirebaseUnit extends Unit {
protected _firebase = firebase;
@Inject()
protected readonly logging!: Logging
@Inject()
protected readonly config!: Config
get() {
return this._firebase
}
/** Called on app start. */
public async up() {
this.logging.info('Initializing Firebase application credentials...')
this._firebase.initializeApp({
credential: firebase.credential.cert(this.config.get('app.firebase.credentials')),
databaseURL: this.config.get('app.firebase.defaultRTDB'),
})
}
/** Called on app shutdown. */
public async down() {
}
}