rows changed in google sheet
parent
7ceccb5b7f
commit
c5bb673823
|
@ -117,7 +117,46 @@ func fetchProducts(srv *sheets.Service) error {
|
||||||
var inWorkProducts []structs.InWorkProduct
|
var inWorkProducts []structs.InWorkProduct
|
||||||
var futureProducts []structs.FutureProduct
|
var futureProducts []structs.FutureProduct
|
||||||
|
|
||||||
for _, row := range resp.Values[1:] { // skip first google worksheet row
|
var (
|
||||||
|
rowIndexProductId int = -1
|
||||||
|
rowIndexStatus int = -1
|
||||||
|
rowIndexName int = -1
|
||||||
|
rowIndexProductVariant int = -1
|
||||||
|
rowIndexProductCharacteristics int = -1
|
||||||
|
rowIndexShopProductLink int = -1
|
||||||
|
rowIndexPublishedAt int = -1
|
||||||
|
)
|
||||||
|
|
||||||
|
for i, row := range resp.Values[1] {
|
||||||
|
switch row {
|
||||||
|
case "#id":
|
||||||
|
rowIndexProductId = i
|
||||||
|
case "Status":
|
||||||
|
rowIndexStatus = i
|
||||||
|
case "Name":
|
||||||
|
rowIndexName = i
|
||||||
|
case "Produktvariante":
|
||||||
|
rowIndexProductVariant = i
|
||||||
|
case "Produktfarbe/Characteristics":
|
||||||
|
rowIndexProductCharacteristics = i
|
||||||
|
case "Shop Produkt Link":
|
||||||
|
rowIndexShopProductLink = i
|
||||||
|
case "Veröffentlicht am":
|
||||||
|
rowIndexPublishedAt = i
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if rowIndexProductId == -1 || rowIndexStatus == -1 || rowIndexName == -1 || rowIndexProductVariant == -1 || rowIndexProductCharacteristics == -1 || rowIndexShopProductLink == -1 || rowIndexPublishedAt == -1 {
|
||||||
|
notification.AddNotification(nil, structs.AddNotificationRequest{
|
||||||
|
UserIds: config.Cfg.NotificationUserIds,
|
||||||
|
Type: 3,
|
||||||
|
Title: "Admin-Dashboard: Failed to get row index. Please check if the row names are equal to the names of the google sheet table header of " + spreadsheetId,
|
||||||
|
})
|
||||||
|
|
||||||
|
return errors.New("Failed to get row index. Please check if the row names are equal to the names of the google sheet table header of " + spreadsheetId)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, row := range resp.Values[2:] { // skip first two google worksheet row
|
||||||
// maybe some error in google sheets table
|
// maybe some error in google sheets table
|
||||||
if len(row) < 3 {
|
if len(row) < 3 {
|
||||||
logger.AddSystemLog(rslogger.LogTypeError, "Skipped row, because row length less than 2")
|
logger.AddSystemLog(rslogger.LogTypeError, "Skipped row, because row length less than 2")
|
||||||
|
@ -125,24 +164,24 @@ func fetchProducts(srv *sheets.Service) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// skip to next if id, status or name is empty
|
// skip to next if id, status or name is empty
|
||||||
if row[0] == "" || row[1] == "" || row[2] == "" {
|
if row[rowIndexProductId] == "" || row[rowIndexStatus] == "" || row[rowIndexName] == "" {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
productId := fmt.Sprintf("%v", row[0])
|
productId := fmt.Sprintf("%v", row[rowIndexProductId])
|
||||||
status := fmt.Sprintf("%v", row[1])
|
status := fmt.Sprintf("%v", row[rowIndexStatus])
|
||||||
name := fmt.Sprintf("%v", row[2])
|
name := fmt.Sprintf("%v", row[rowIndexName])
|
||||||
|
|
||||||
var productVariant string
|
var productVariant string
|
||||||
|
|
||||||
if len(row) > 3 && row[3] != "" {
|
if len(row) > rowIndexProductVariant && row[rowIndexProductVariant] != "" {
|
||||||
productVariant = fmt.Sprintf("%v", row[3])
|
productVariant = fmt.Sprintf("%v", row[rowIndexProductVariant])
|
||||||
}
|
}
|
||||||
|
|
||||||
var productCharacteristics string
|
var productCharacteristics string
|
||||||
|
|
||||||
if len(row) > 4 && row[4] != "" {
|
if len(row) > rowIndexProductCharacteristics && row[rowIndexProductCharacteristics] != "" {
|
||||||
productCharacteristics = fmt.Sprintf("%v", row[4])
|
productCharacteristics = fmt.Sprintf("%v", row[rowIndexProductCharacteristics])
|
||||||
}
|
}
|
||||||
|
|
||||||
state := getStateByStatus(status)
|
state := getStateByStatus(status)
|
||||||
|
@ -176,20 +215,28 @@ func fetchProducts(srv *sheets.Service) error {
|
||||||
var url string
|
var url string
|
||||||
var publishedAt string
|
var publishedAt string
|
||||||
|
|
||||||
if len(row) > 8 && row[8] != "" {
|
if len(row) > rowIndexShopProductLink && row[rowIndexShopProductLink] != "" {
|
||||||
url = fmt.Sprintf("%v", row[8])
|
url = fmt.Sprintf("%v", row[rowIndexShopProductLink])
|
||||||
} else {
|
} else {
|
||||||
logger.AddSystemLog(rslogger.LogTypeWarning, "Url missing for product id: %s name: %s", productId, name)
|
logger.AddSystemLog(rslogger.LogTypeWarning, "Url missing for product id: %s name: %s", productId, name)
|
||||||
|
|
||||||
notification.AddNotification(nil, structs.AddNotificationRequest{
|
notification.AddNotification(nil, structs.AddNotificationRequest{
|
||||||
UserIds: config.Cfg.NotificationUserIds,
|
UserIds: config.Cfg.NotificationUserIds,
|
||||||
Type: 3,
|
Type: 3,
|
||||||
Title: "Missing 'Shop Produkt Link' for product pipeline\n\nproduct id: " + productId + "\nname: " + name + "\n\nDie URL für das Produkt in dem Google Sheet 'Produkte' -> Worksheet: 'Pipeline' eintragen!",
|
Title: "Missing 'Shop Produkt Link' for product pipeline\n\nproduct id: " + productId + "\nname: " + name + "\n\nGoogle Sheet 'Produkte' -> Worksheet: 'Pipeline' eintragen!",
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(row) > 9 && row[9] != "" {
|
if len(row) > rowIndexPublishedAt && row[rowIndexPublishedAt] != "" {
|
||||||
publishedAt = fmt.Sprintf("%v", row[9])
|
publishedAt = fmt.Sprintf("%v", row[rowIndexPublishedAt])
|
||||||
|
} else {
|
||||||
|
logger.AddSystemLog(rslogger.LogTypeWarning, "'Veröffentlicht am' date missing for product id: %s name: %s", productId, name)
|
||||||
|
|
||||||
|
notification.AddNotification(nil, structs.AddNotificationRequest{
|
||||||
|
UserIds: config.Cfg.NotificationUserIds,
|
||||||
|
Type: 3,
|
||||||
|
Title: "Missing 'Veröffentlicht am' for product pipeline\n\nproduct id: " + productId + "\nname: " + name + "\n\nGoogle Sheet 'Produkte' -> Worksheet: 'Pipeline' eintragen!",
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
newProducts = append(newProducts, structs.NewProduct{
|
newProducts = append(newProducts, structs.NewProduct{
|
||||||
|
|
30
start.sh
30
start.sh
|
@ -1,5 +1,35 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
#screen -dmS admin-dashboard-backend | exit 0
|
#screen -dmS admin-dashboard-backend | exit 0
|
||||||
#screen -S admin-dashboard-backend -p 0 -X stuff 'go run main.go\n'
|
#screen -S admin-dashboard-backend -p 0 -X stuff 'go run main.go\n'
|
||||||
|
|
||||||
|
# Set variables
|
||||||
|
BACKUP_DIR="backups"
|
||||||
|
DATE=$(date +'%Y-%m-%d_%H-%M-%S')
|
||||||
|
MAIN_FILE="main"
|
||||||
|
BACKUP_FILE="$BACKUP_DIR/main-$DATE"
|
||||||
|
MAX_BACKUPS=10
|
||||||
|
|
||||||
|
# Create backup directory if it doesn't exist
|
||||||
|
mkdir -p $BACKUP_DIR
|
||||||
|
|
||||||
|
# Check if the main file exists and move it to the backup directory with the current date and time
|
||||||
|
if [ -f $MAIN_FILE ]; then
|
||||||
|
mv $MAIN_FILE $BACKUP_FILE
|
||||||
|
echo "Backup of '$MAIN_FILE' created at '$BACKUP_FILE'"
|
||||||
|
else
|
||||||
|
echo "No existing main file to backup."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Ensure there are at most MAX_BACKUPS backups in the directory
|
||||||
|
BACKUPS_COUNT=$(ls $BACKUP_DIR | wc -l)
|
||||||
|
if [ $BACKUPS_COUNT -gt $MAX_BACKUPS ]; then
|
||||||
|
BACKUPS_TO_DELETE=$(expr $BACKUPS_COUNT - $MAX_BACKUPS)
|
||||||
|
ls -t $BACKUP_DIR | tail -n $BACKUPS_TO_DELETE | while read -r file; do
|
||||||
|
rm "$BACKUP_DIR/$file"
|
||||||
|
echo "Deleted old backup '$BACKUP_DIR/$file'"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
go build main.go
|
go build main.go
|
||||||
sudo systemctl restart admin-dashboard-backend.service
|
sudo systemctl restart admin-dashboard-backend.service
|
Loading…
Reference in New Issue