1.0.4 • Published 2 years ago

@frost-orm/frost-web v1.0.4

Weekly downloads
-
License
GPL-3.0
Repository
-
Last release
2 years ago

What is Frost?

Frost is an ORM (Object Relational Mapping) Library that utilizes Typescript Decorators to simplify working with Firebases's Realtime DB. Frost Focuses on the relations between the database nodes and generates all the needed code for the developer to fetch these nodes with the ones related to them. It also utilizes ReactiveX to provide the developer with observables that listen to the changes on theses nodes. And Of course provide the developer with the utilities to preform basic operations on the database.

Full Documentation

Getting Started

Before we head to defining the classes and the relations between them, we need to setup the project.

What you'll need

  • Decorators Support in your project. if you don't have it already follow this guide
  • Firebase Database credentials to initialize the database client.

Finally you can follow the installation guide and then go through the documentation or follow the quick start guide

Installing the package

npm install @frost-orm/frost-web

Setup

  • Pass the firebase configuration object to Frost.initialize function instead of initializeApp function from firebase.
  • Pass a map of the APIs you've defined (this explained in Create A Node section) as the second parameter. the key for each API should be the name that you want to access it by later on.
  • This will initialize the Firebase Instance and Frost Instance along with the APIs.
  • The initialize function will return an object with the properties:

Frost uses Firebase Web SDK 9 internally. So the Firebase app instance is a SDK 9 instance.

const firebaseConfig = {
  apiKey: "...",
  authDomain: "...",
  databaseURL: "...",
  projectId: "...",
  messagingSenderId: "...",
  appId: "...",
  ...
};

export const FrostApp = Frost.initialize(firebaseConfig,{
  "users":UserApi,
  "posts":PostApi,
  "courses":CourseApi,
  "profiles":ProfileApi,
})

//highlight-start
/**
 * Shape of FrostApp
 * {
 *  firebaseApp: FirebaseApp,
 *  users: UserApi,
 *  posts: PostApi,
 *  courses: CourseApi,
 *  profiles: ProfileApi,
 * }
 * /
//highlight-end

To access the Firebase App Instance or the APIs Instances

import {FrostApp} from "src/database/frost.ts"
FrostApp.firebaseApp

FrostApp.users
FrostApp.posts
FrostApp.courses
FrostApp.profiles

or you can export each api individually

const firebaseConfig = {
  apiKey: "...",
  authDomain: "...",
  databaseURL: "...",
  projectId: "...",
  messagingSenderId: "...",
  appId: "...",
  ...
};

const FrostApp = Frost.initialize(firebaseConfig,{
  "users":UserApi,
  "posts":PostApi,
  "courses":CourseApi,
  "profiles":ProfileApi,
})
export {
  FrostApp.users as UserApi,
  FrostApp.posts as PostApi,
  FrostApp.courses as CourseApi,
  FrostApp.profiles as ProfileApi,
}