Ensure unique price list when inserting prices. Add deploy_mks script.
Some checks failed
Build .NET Project / build (push) Has been cancelled
Some checks failed
Build .NET Project / build (push) Has been cancelled
This commit is contained in:
@@ -1499,6 +1499,7 @@ namespace MarketData.DataAccess
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
if(null==prices||0==prices.Count)return false;
|
if(null==prices||0==prices.Count)return false;
|
||||||
|
prices = new Prices(prices.DistinctBy(x => new {x.Symbol, x.Date.Date}).ToList()); // ensure prices are distinct
|
||||||
sqlConnection = SqlUtils.CreateMySqlConnection(MainDataSource.Instance.LocateDataSource("market_data"));
|
sqlConnection = SqlUtils.CreateMySqlConnection(MainDataSource.Instance.LocateDataSource("market_data"));
|
||||||
sqlTransaction=sqlConnection.BeginTransaction(System.Data.IsolationLevel.ReadCommitted);
|
sqlTransaction=sqlConnection.BeginTransaction(System.Data.IsolationLevel.ReadCommitted);
|
||||||
DeletePrices(prices,sqlConnection,sqlTransaction);
|
DeletePrices(prices,sqlConnection,sqlTransaction);
|
||||||
|
|||||||
81
Scripts/deploy_mks.sh
Executable file
81
Scripts/deploy_mks.sh
Executable file
@@ -0,0 +1,81 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# to run : ./deploy_mks.sh
|
||||||
|
# This will backup the current contents of /opt/MarketData/MarketDataServer to /opt/MarketData/MarketDataServer_Rollback
|
||||||
|
# and deploy the mks binary to /opt/MarketData/MarketDataServer
|
||||||
|
# 1) Stop the mks service
|
||||||
|
# 2) Perform the backup
|
||||||
|
# 3) Perform the deployment
|
||||||
|
|
||||||
|
# set xtrace if you want to see trace level
|
||||||
|
#set -o xtrace
|
||||||
|
|
||||||
|
# use systemctl so we can bypass the pager
|
||||||
|
sudo systemctl --no-pager stop mks
|
||||||
|
sudo systemctl --no-pager status mks
|
||||||
|
|
||||||
|
# Define source and destination directories
|
||||||
|
SOURCE_DIR="/home/pi/ARM64/MarketDataServer/bin/Debug/net8.0"
|
||||||
|
DEST_DIR="/opt/MarketData/MarketDataServer"
|
||||||
|
ROLLBACK_DIR="/opt/MarketData/MarketDataServer_Rollback"
|
||||||
|
|
||||||
|
# Here begins the actual deployment process
|
||||||
|
|
||||||
|
# Check if source directory exists
|
||||||
|
if [ ! -d "$SOURCE_DIR" ]; then
|
||||||
|
echo "Error: Source directory '$SOURCE_DIR' not found."
|
||||||
|
# use systemctl so we can bypass the pager prompts
|
||||||
|
sudo systemctl --no-pager start mks
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if destination directory exists, create if not
|
||||||
|
if [ ! -d "$DEST_DIR" ]; then
|
||||||
|
echo "Destination directory '$DEST_DIR' not found. Creating it..."
|
||||||
|
mkdir -p "$DEST_DIR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if rollback directory exists, create if not
|
||||||
|
if [ ! -d "$ROLLBACK_DIR" ]; then
|
||||||
|
echo "Rollback directory '$ROLLBACK_DIR' not found. Creating it..."
|
||||||
|
mkdir -p "$ROLLBACK_DIR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Clean the rollback folder
|
||||||
|
echo "Clean the rollback folder"
|
||||||
|
rm -rf $ROLLBACK_DIR/*
|
||||||
|
num_files=$(find "$ROLLBACK_DIR" -maxdepth 1 -type f | wc -l)
|
||||||
|
echo "Number of files after clean '$ROLLBACK_DIR': $num_files"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Backup current release
|
||||||
|
echo "Backup the current release"
|
||||||
|
cp -rv "$DEST_DIR"/* "$ROLLBACK_DIR"/
|
||||||
|
num_files=$(find "$ROLLBACK_DIR" -maxdepth 1 -type f | wc -l)
|
||||||
|
echo "Number of files after copy to backup '$ROLLBACK_DIR': $num_files"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Remove files
|
||||||
|
echo "Clean the deployment folder"
|
||||||
|
find "$DEST_DIR" -mindepth 1 -path "$DEST_DIR/logs" -prune -o -exec rm -rf {} +
|
||||||
|
num_files=$(find "$DEST_DIR" -maxdepth 1 -type f | wc -l)
|
||||||
|
echo "Number of files after clean '$DEST_DIR': $num_files"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Copy all files from source to destination
|
||||||
|
# The -v option provides verbose output (shows files being copied)
|
||||||
|
# The -r option is for recursive copy, useful if source_folder contains subdirectories
|
||||||
|
echo "Deploy the release candidate"
|
||||||
|
cp -rv "$SOURCE_DIR"/* "$DEST_DIR"/
|
||||||
|
num_files=$(find "$DEST_DIR" -maxdepth 1 -type f | wc -l)
|
||||||
|
echo "Number of files after deployment '$DEST_DIR': $num_files"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo "Files copied from '$SOURCE_DIR' to '$DEST_DIR'."
|
||||||
|
|
||||||
|
# use systemctl so we can bypass the pager prompts
|
||||||
|
sudo systemctl --no-pager restart mks
|
||||||
|
sudo systemctl --no-pager status mks
|
||||||
|
|
||||||
|
echo "Done."
|
||||||
|
|
||||||
Reference in New Issue
Block a user