1 โปรแกรมตรวจเช็คข้อมูล ทำงานทุกครั้งที่เรียกใช้ หรือโปรแกรมอะไรก็ได้
2 Task service สั่งให้เรียกใช้ โปรแกรมนั้นๆ ตามเวลาที่กำหนด
หลักการมีแค่นั้น ไม่มี database server มาเกี่ยวข้อง
Task service ใช้ data ภายในตัวมันเอง เป็นแค่ ไฟล์ เล็กๆ เท่านั้น ไม่ถีงกับต้องใช้ database server
Task service เป็น โปรแกรม ที่มีมาให้แล้ว ทุก os
//import { auth, EventContext } from 'firebase-functions'
import * as functions from 'firebase-functions';
import { UserInfo } from '../../../common/models/userInfo';
import { UserRecord } from "firebase-functions/lib/providers/auth";
import moment from 'moment';
import { db } from "../config/config";
import * as admin from "firebase-admin";
async function _onProductsUpdated(change: any, context: any) {
const productId = context.params.productId
const newValue = change.after.data(); // e.g. {'displayName': 'FuckerMan', 'weight': 85}
const oldValue = change.before.data(); // e.g. {'displayName': 'FuckerMan', 'weight': 65}
var pv = 0.00;
var mp = 0.00;
var va = 0.00;
var JiMi ="Very Big";
if (newValue.unitCost != oldValue.unitCost) {
const productCatgegory = db.collection("productCategory").where("productCatId", "==", newValue.productCatId)
.get()
.then( shapshot => {
const x = shapshot.docs[0].data();
pv = x.productSellPrice.percentPlus;
mp = x.productSellPrice.messengerPrice;
va = x.productSellPrice.vat;
});
const products = db.collection("products").where("productId", "==", productId)
.get()
.then(snapshot => {
snapshot.forEach(doc => {
// doc.ref.collection
let rowUpdate = db.collection("products").doc(doc.id);
let rowData = doc.data();
let unitCost = rowData.unitCost; //unitCose
let unitWeightFrom = rowData.productPackage.unitWeightFrom;
let lastSellPrice = unitCost + ((unitCost * (pv / 100)) + (mp * unitWeightFrom)) * (1 + (va / 100));
rowUpdate.update({ unitSellPrice: lastSellPrice })
});
});
}
}
export const onProductsUpdated = functions.firestore
.document("products/{productId}")
.onUpdate(_onProductsUpdated);
Code (SQL)
declare @TotalRows int = (select count(1) from ARMas);
declare @RowCount1 int = 1;
declare @RowCount2 int = 0
declare @AtTime1 varchar(2) = ''; -- 08:00:00
declare @AtTime2 varchar(2) = ''; -- 08:00:00
declare @JiMi varchar(2);
while @RowCount1 <= @TotalRows
begin
--set nocount on;
select @AtTime1 = WorkTime from ARMas Where Id = @RowCount1;
set @JiMi = @AtTime1;
while @RowCount2 <= 4
begin
select @JiMi = WorkTime from ARMas Where Id = @RowCount1;
if @RowCount2 > 4
begin
break; -- exists 'เก่า' <> 'ใหม่'
end
print @AtTime2 + ' -> ' + cast(@RowCount2 as varchar) + ' <--' + format(6996, 'D6');
set @RowCount2 = @RowCount2 + 1;
end
print @Attime1;
set @RowCount2 = 0;
set @RowCount1 = @RowCount1 + 1;
end;