rows changed in google sheet

main
alex 2024-06-14 18:28:20 +02:00
parent 7ceccb5b7f
commit c5bb673823
3 changed files with 91 additions and 14 deletions

BIN
main

Binary file not shown.

View File

@ -117,7 +117,46 @@ func fetchProducts(srv *sheets.Service) error {
var inWorkProducts []structs.InWorkProduct
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
if len(row) < 3 {
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
if row[0] == "" || row[1] == "" || row[2] == "" {
if row[rowIndexProductId] == "" || row[rowIndexStatus] == "" || row[rowIndexName] == "" {
continue
}
productId := fmt.Sprintf("%v", row[0])
status := fmt.Sprintf("%v", row[1])
name := fmt.Sprintf("%v", row[2])
productId := fmt.Sprintf("%v", row[rowIndexProductId])
status := fmt.Sprintf("%v", row[rowIndexStatus])
name := fmt.Sprintf("%v", row[rowIndexName])
var productVariant string
if len(row) > 3 && row[3] != "" {
productVariant = fmt.Sprintf("%v", row[3])
if len(row) > rowIndexProductVariant && row[rowIndexProductVariant] != "" {
productVariant = fmt.Sprintf("%v", row[rowIndexProductVariant])
}
var productCharacteristics string
if len(row) > 4 && row[4] != "" {
productCharacteristics = fmt.Sprintf("%v", row[4])
if len(row) > rowIndexProductCharacteristics && row[rowIndexProductCharacteristics] != "" {
productCharacteristics = fmt.Sprintf("%v", row[rowIndexProductCharacteristics])
}
state := getStateByStatus(status)
@ -176,20 +215,28 @@ func fetchProducts(srv *sheets.Service) error {
var url string
var publishedAt string
if len(row) > 8 && row[8] != "" {
url = fmt.Sprintf("%v", row[8])
if len(row) > rowIndexShopProductLink && row[rowIndexShopProductLink] != "" {
url = fmt.Sprintf("%v", row[rowIndexShopProductLink])
} else {
logger.AddSystemLog(rslogger.LogTypeWarning, "Url missing for product id: %s name: %s", productId, name)
notification.AddNotification(nil, structs.AddNotificationRequest{
UserIds: config.Cfg.NotificationUserIds,
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] != "" {
publishedAt = fmt.Sprintf("%v", row[9])
if len(row) > rowIndexPublishedAt && row[rowIndexPublishedAt] != "" {
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{

View File

@ -1,5 +1,35 @@
#!/bin/bash
#screen -dmS admin-dashboard-backend | exit 0
#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
sudo systemctl restart admin-dashboard-backend.service