Compare commits

...

7 Commits

Author SHA1 Message Date
Ehab-24
21f02fcad0 Merge aa488b84d3 into 5ff48033e1 2023-07-03 23:14:06 +08:00
Julien Le Coupanec
5ff48033e1 Merge pull request #304 from sangeethkc/master
new laravel artisan commands added
2023-06-26 22:00:00 +02:00
SANGEETH
6c3b6ee90e Merge branch 'LeCoupa:master' into master 2023-06-26 15:24:39 +05:30
Julien Le Coupanec
7e9e6af408 Merge pull request #334 from samyak003/master
Added cheatsheet for Firebase CLI
2023-06-19 12:59:07 +02:00
Samyak
0ee3753e2f Added cheatsheet for Firebase CLI 2023-06-18 19:58:27 +05:30
Ehab-24
aa488b84d3 feat - mongoose cheatsheet [in progress]
Notes:
 - Schema
 - Model
 - Promises
 - Aggregation
2023-03-24 17:13:05 +05:00
sangeethkc
cb9ca87a4b new laravel commands added 2022-10-18 15:27:14 +05:30
4 changed files with 426 additions and 2 deletions

View File

@@ -124,6 +124,7 @@ Feel free to take a look. You might learn new things. They have been designed to
- [Nginx](tools/nginx.sh)
- [PM2](tools/pm2.sh)
- [Ubuntu](tools/ubuntu.sh)
- [Firebase CLI](tools/firebase_cli.md)
</details>
## 🙌🏼 How to Contribute?

View File

@@ -8,6 +8,8 @@
// MAIN.
php artisan clear-compiled // Remove the compiled class file
php artisan db // Start a new database CLI session
php artisan docs // Access the Laravel documentation
php artisan down // Put the application into maintenance mode
php artisan dump-server // Start the dump server to collect dump information.
php artisan env // Display the current framework environment
@@ -43,6 +45,9 @@ php artisan config:clear // Remove the configuration cache file
// DB
php artisan db:seed // Seed the database with records
php artisan db:show // Display information about the given database
php artisan db:table // Display information about the given database table
php artisan db:wipe // Drop all tables, views, and types
// EVENT
@@ -54,9 +59,10 @@ php artisan key:generate // Set the application key
// MAKE
php artisan make:auth // Scaffold basic login and registration views and routes
php artisan make:cast // Create a new custom Eloquent cast class
php artisan make:channel // Create a new channel class
php artisan make:command // Create a new Artisan command
php artisan make:component // Create a new view component class
php artisan make:controller // Create a new controller class
php artisan make:event // Create a new event class
php artisan make:exception // Create a new custom exception class
@@ -74,6 +80,7 @@ php artisan make:provider // Create a new service provider class
php artisan make:request // Create a new form request class
php artisan make:resource // Create a new resource
php artisan make:rule // Create a new validation rule
php artisan make:scope // Create a new scope class
php artisan make:seeder // Create a new seeder class
php artisan make:test // Create a new test class
@@ -86,6 +93,10 @@ php artisan migrate:reset // Rollback all database migrations
php artisan migrate:rollback // Rollback the last database migration
php artisan migrate:status // Show the status of each migration
// MODEL
php artisan model:prune // Prune models that are no longer needed
php artisan model:show // Show information about an Eloquent model
// NOTIFICATIONS
php artisan notifications:table // Create a migration for the notifications table
@@ -100,13 +111,19 @@ php artisan package:discover // Rebuild the cached package manifest
// QUEUE
php artisan queue:batches-table // Create a migration for the batches database table
php artisan queue:clear // Delete all of the jobs from the specified queue
php artisan queue:failed // List all of the failed queue jobs
php artisan queue:failed-table // Create a migration for the failed queue jobs database table
php artisan queue:flush // Flush all of the failed queue jobs
php artisan queue:forget // Delete a failed queue job
php artisan queue:listen // Listen to a given queue
php artisan queue:monitor // Monitor the size of the specified queues
php artisan queue:prune-batches // Prune stale entries from the batches database
php artisan queue:prune-failed // Prune stale entries from the failed jobs table
php artisan queue:restart // Restart queue worker daemons after their current job
php artisan queue:retry // Retry a failed queue job
php artisan queue:retry-batch // Retry the failed jobs for a batch
php artisan queue:table // Create a migration for the queue jobs database table
php artisan queue:work // Start processing jobs on the queue as a daemon
@@ -116,9 +133,26 @@ php artisan route:cache // Create a route cache file for faster route r
php artisan route:clear // Remove the route cache file
php artisan route:list // List all registered routes
// SAIL
php artisan sail:install // Install Laravel Sail's default Docker Compose file
php artisan sail:publish // Publish the Laravel Sail Docker files
// SANCTUM
php artisan sanctum:prune-expired // Prune tokens expired for more than specified number of hours.
// SCHEDULE
php artisan schedule:clear-cache // Delete the cached mutex files created by scheduler
php artisan schedule:list // List the scheduled commands
php artisan schedule:run // Run the scheduled commands
php artisan schedule:test // Run a scheduled command
php artisan schedule:work // Start the schedule worker
// SCHEMA
php artisan schema:dump // Dump the given database schema
// SESSION
@@ -128,6 +162,10 @@ php artisan session:table // Create a migration for the session database
php artisan storage:link // Create a symbolic link from "public/storage" to "storage/app/public"
// STUD
php artisan stub:publish // Publish all stubs that are available for customization
// VENDOR
php artisan vendor:publish // Publish any publishable assets from vendor packages

245
databases/mongoose.js Normal file
View File

@@ -0,0 +1,245 @@
/* *****************************************************************
* Mongoose is a MongoDB object modeling tool designed to work in an asynchronous environment.
* Mongoose supports both promises and callbacks.
* ****************************************************************/
// Import Mongoose
const mongoose = require("mongoose");
/* *****************************************************************
List of Mongoose Data Types:
String
Number
Date
Buffer
Boolean
Mixed
ObjectId
Array
Decimal128
Map
Schema
UUID
******************************************************************/
/* *****************************************************************
* Schema
* A schema is a blueprint for a model.
* It defines the structure of the document, default values, validators, etc.
* ****************************************************************/
// Define schema for the a collection
const productSchema = new mongoose.Schema({
name: {
type: String,
immutable: true, // This field cannot be changed after creation
},
price: {
type: Number,
min: 0, // Minimum value is 0
max: 10000, // Maximum value is 10000
required: true, // Not specifying a required field will result in validation error
},
category: {
type: String,
enum: ["fruit", "vegetable", "dairy"], // Only these values are allowed for 'category'
},
tags: [
// Array of String
{
type: String,
minLength: 2, // Minimum length of a single tag is 2
maxlength: 10, // Maximum length of a single tag is 10
},
],
createdAt: {
type: Date,
// WRONG!
// default: Date.now(), // This results in the current date being set (as a static value) when the schema is compiled
// Correct!
default: () => Date.now(), // We instead use a getter function that returns the current date when called
},
});
// Create a model from the schema
const Product = mongoose.model("Product", productSchema);
// We can now use the model to create new documents in the 'products' collection
/* *****************************************************************
* Promises
* ****************************************************************/
Product.create({
name: "guava",
price: 10,
category: "fruit",
tags: ["green", "sweet", "fresh"],
});
Product.insertMany([
{
name: "apple",
price: 5,
category: "fruit",
tags: ["red", "sweet"],
},
{
name: "banana",
price: 3,
category: "fruit",
tags: ["yellow", "sweet"],
},
{
name: "broccoli",
price: 2,
category: "vegetable",
tags: ["green", "healthy"],
},
{
name: "milk",
price: 4,
category: "dairy",
tags: ["white", "healthy"],
},
]);
Product.find(); // Get documents in 'product' colelction
Product.find({ name: "guava" }); // Get documents where name = 'guava'
Product.find({ price: { $gt: 5, $lt: 10 } }); // Get documents where 5 < price < 10
Product.find({ name: "banana" }).select({ name: 1, price: 1 }); // Get documents where name = 'banana' and only return name and price
Product.countDocuments({ category: "vegetables" }); // Get count of documents where category = 'vegetables'
Product.updateOne({ name: "guava" }, { price: 15 }); // Update the price of the document where name = 'guava' to 15
Product.deleteOne({ name: "guava" }); // Delete the document where name = 'guava'
Product.deleteMany({ category: "fruit" }); // Delete all documents where category = 'fruit'
/* *****************************************************************
* Aggregation
* The aggregation pipeline refers to a specific flow of operations that processes, transforms, and returns results.
* In a pipeline, successive operations are informed by the previous result.
* Check out the MongoDB documentation at: https://www.mongodb.com/docs/manual/aggregation/
* ****************************************************************/
// * $match
// The following aggration pipeline returns all products where price > 80 AND price < 120.
let pipeline = [
{
$match: {
price: {
$gt: 80,
$lt: 120,
},
},
},
];
// or you can use:
pipeline = [
{
$match: {
price: {
$and: [{ $gt: 80 }, { $lt: 120 }],
},
},
},
];
// Similarly, you can use $or:
pipeline = [
{
$match: {
category: {
$or: [{ $eq: "fruit" }, { $eq: "vegetable" }],
},
},
},
];
// * $group
// The following aggregation pipeline returns the total number of products created less than a year ago, in each category.
pipeline = [
{
$match: {
date: {
$gte: new Date(new Date().setFullYear(new Date().getFullYear() - 1)),
},
},
},
{
$group: {
_id: "$category",
count: { $sum: 1 },
},
},
];
// * $sort
// The following aggregation pipeline returns top 10 most expensive products.
// Note: The $sort stage must come before $limit.
pipeline = [
{
$sort: {
price: -1,
},
},
{
$limit: 10,
},
];
// * $project
// To get the name and price of all products along with their ObjectId:
pipeline = [
{
$project: {
name: 1,
price: 1,
},
},
];
// or you can exclude all other fields:
pipeline = [
{
$project: {
category: 0, // 0 means exclude
tags: 0,
date: 0,
},
},
];
// Note: You may not use both 0 and 1 in the same projection
// other than _id, which is included by default:
pipeline = [
{
$project: {
_id: 0, // exclude ObjectId as well
name: 1,
price: 1,
},
},
];
// * $unwind
// The following aggregation returns a new document for 'guava' for each of its tags.
pipeline = [
{
$match: {
name: "guava",
},
},
{
$unwind: {
path: "$tags", // Name of array field that we want to unwind
includeArrayIndex: "arrayIndex", // This will add a new field 'arrayIndex' to each document
preserveNullAndEmptyArrays: true, // This will return a document for each tag, even if the 'tags' is null or empty
},
},
];

140
tools/firebase_cli.md Normal file
View File

@@ -0,0 +1,140 @@
# Firebase CLI Guide
Firebase CLI (Command Line Interface) is a powerful tool that allows developers to interact with Firebase services and manage their Firebase projects directly from the command line. It provides a convenient and efficient way to deploy projects, manage databases, configure authentication, and more, streamlining the development and deployment processes.
## Installation
To use the Firebase CLI, you need to have Node.js and npm (Node Package Manager) installed on your system. Follow the steps below to install the Firebase CLI:
1. Install Node.js and npm by downloading the installer from the [official Node.js website](https://nodejs.org/en/download/) and following the installation instructions for your operating system.
2. Once Node.js and npm are installed, open your terminal or command prompt and run the following command to install the Firebase CLI globally:
```
npm install -g firebase-tools
```
This command will download and install the Firebase CLI package from the npm registry.
3. After the installation is complete, you can verify that the Firebase CLI is installed correctly by running the following command:
```
firebase --version
```
If the installation was successful, you will see the version number of the Firebase CLI printed in the terminal.
Congratulations! You have successfully installed the Firebase CLI.
## Usage
The Firebase CLI allows you to interact with Firebase services and manage your Firebase projects from the command line. Here are some common tasks you can perform using the Firebase CLI:
- Initialize a new Firebase project in your current directory.
- Deploy your Firebase project to Firebase hosting.
- Manage Firebase Authentication, Realtime Database, Cloud Firestore, Cloud Functions, and other Firebase services.
- Configure Firebase project settings.
- Interact with Firebase emulators for local development and testing.
To use the Firebase CLI, open your terminal or command prompt and run the `firebase` command followed by the desired command and options.
Here's an example of the basic usage:
```
firebase <command> [options]
```
Replace `<command>` with the specific Firebase command you want to execute, and `[options]` with any additional options or flags required for that command.
For more detailed usage information, you can run the following command:
```
firebase help
```
This command will display the available Firebase commands and provide detailed information about each command.
## Commands
Here are the commonly used Firebase CLI commands along with a brief explanation, syntax, and an example for each command:
- `firebase init`: Initializes a new Firebase project in the current directory.
- Syntax: `firebase init [options]`
- Example: `firebase init hosting` initializes Firebase Hosting for the current project.
- `firebase deploy`: Deploys your Firebase project to Firebase hosting or other Firebase services.
- Syntax: `firebase deploy [options]`
- Example: `firebase deploy --only hosting` deploys only the Firebase Hosting content.
- `firebase serve`: Starts local development servers and Firebase emulators.
- Syntax: `firebase serve [options]`
- Example: `firebase serve --only functions,hosting` starts the Firebase emulators for functions and hosting.
- `firebase login`: Authenticates the Firebase CLI with your Firebase account.
- Syntax: `firebase login [options]`
- Example: `firebase login --no-localhost` initiates an interactive login session without connecting to localhost.
- `firebase logout`: Logs out from the Firebase CLI.
- Syntax: `firebase logout [options]`
- Example: `firebase logout` logs out the currently authenticated user.
- `firebase use`: Sets the active Firebase project for the current directory.
- Syntax: `firebase use <project_id> [options]`
- Example: `firebase use my-project` sets "my-project" as the active Firebase project.
- `firebase functions`: Interacts with Firebase Cloud Functions.
- Syntax: `firebase functions:command [options]`
- Example: `firebase functions:delete [function_name]` deletes all functions that match the specified name in all regions.
- `firebase database`: Interacts with Firebase Realtime Database.
- Syntax: `firebase database:command [options]`
- Example: `firebase database:get /users` retrieves data from the Firebase Realtime Database.
- `firebase firestore`: Interacts with Firebase Cloud Firestore.
- Syntax: `firebase firestore:command [options]`
- Example: `firebase firestore:delete collection/document` deletes a document from the Firestore database.
- `firebase auth`: Interacts with Firebase Authentication.
- Syntax: `firebase auth:command [options]`
- Example: `firebase auth:export users.csv` exports user data to a CSV file.
- `firebase hosting`: Interacts with Firebase Hosting.
- Syntax: `firebase hosting:command [options]`
- Example: `firebase hosting:disable` disables Firebase Hosting for the current project.
- `firebase remoteconfig`: Interacts with Firebase Remote Config.
- Syntax: `firebase remoteconfig:command [options]`
- Example: `firebase remoteconfig:get template` retrieves the Remote Config template.
- `firebase ext`: Interacts with Firebase Extensions.
- Syntax: `firebase ext:command [options]`
- Example: `firebase ext:install firebase/delete-user-data` installs the Firebase Extension named "firebase/delete-user-data".
- `firebase appdistribution`: Interacts with Firebase App Distribution.
- Syntax: `firebase appdistribution:command [options]`
- Example: `firebase appdistribution:testers:add` Adds testers to the project.
- `firebase use --add`: Adds an existing Firebase project to the current directory
- Syntax: `firebase use --add`
- Example: `firebase use --add` interactively adds an existing Firebase project.
- `firebase projects:create`: Creates a new Firebase project.
- Syntax: `firebase projects:create [options]`
- Example: `firebase projects:create --display-name "My Project"` creates a new Firebase project with the given display name.
These are just a few examples of the available commands. You can explore more commands and their options by running `firebase help` or visiting the [official Firebase CLI documentation](https://firebase.google.com/docs/cli).