diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5ab1384 --- /dev/null +++ b/.gitignore @@ -0,0 +1,448 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +build/ +bld/ +[Bb]in/ +[Oo]bj/ +out/ +target/ + +# Visual Studio 2015 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ +**/Properties/launchSettings.json +# DNX +project.lock.json +artifacts/ + +*.class +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb +*.opensdf +*.sdf +*.cachefile + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +# publish/ + +# Publish Web Output +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config + +# Windows Azure Build Output +csx/ +*.build.csdef + +# Windows Store app package directory +AppPackages/ + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +[Ss]tyle[Cc]op.* +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +*.pfx +*.publishsettings +node_modules/ +orleans.codegen.cs + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Typescript v1 declaration files +typings/ +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush +.cr/ + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +/build +/Build +/deploy +/package +bin/ +obj/ +sql/ +*/obj/debug +**/Debug +#ignore thumbnails created by windows +Thumbs.db +#Ignore files build by Visual Studio +*.obj +*.pdb +*.user +*.aps +*.pch +*.docstates +*.vspscc +*_i.c +*_p.c +*.ncb +*.suo +*.tlb +*.dbmdl +*.schemaview +*.tlh +*.cache +*.ilk +*.log +[Bb]in +[Dd]ebug*/ +*.lib +*.sbr +obj/ +[Rr]elease*/ +_ReSharper*/ +[Tt]est[Rr]esult* +*.docstates +*.swp +*.*~ +*.gpState +*.ReSharper* +*.preflight +*.nocommit +#Ignore Recovery Files made by Excel +~$*.xlsx +*.rdl.data + +*.jfm + +#====================================================================================== +# The below section could possibly be removed as these should be ignored by the above. +#====================================================================================== + +samples/in-memory/ticket-reservations/DemoWorkload/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs +*.nupkg +samples/in-memory/ticket-reservations/packages/CircularGauge.1.0.0/CreatePackageFile.bat +*.suo +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/bin/Debug/PopulateAlwaysEncryptedData.exe +*.pdb +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/bin/Debug/PopulateAlwaysEncryptedData.vshost.exe +*.Cache +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/bin/Debug/PopulateAlwaysEncryptedData.exe.config +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs +samples/databases/wide-world-importers/workload-drivers/vehicle-location-insert/MultithreadedInMemoryTableInsert/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs +*.exe +samples/features/in-memory/iot-smart-grid/ConsoleClient/bin/Release/DataGenerator.dll +samples/features/in-memory/iot-smart-grid/ConsoleClient/bin/Release/Reports/PowerDashboard.pbix +samples/databases/wide-world-importers/wwi-integration-etl/Daily ETL/bin/Development/Daily ETL.ispac +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/obj/Release/PopulateAlwaysEncryptedData.csproj.FileListAbsolute.txt +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/bin/Release/PopulateAlwaysEncryptedData.vshost.exe.config +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs +*.dll +samples/features/in-memory/ticket-reservations/DemoWorkload/obj/Release/DemoWorkload.FrmConfig.resources +samples/features/in-memory/ticket-reservations/DemoWorkload/bin/Release/DemoWorkload.vshost.exe.config +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/obj/Debug/PopulateAlwaysEncryptedData.csproj.FileListAbsolute.txt +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/bin/Debug/PopulateAlwaysEncryptedData.vshost.exe.config +*.zip +samples/features/in-memory/ticket-reservations/packages/CircularGauge.1.0.0/CreatePackageFile.bat +samples/features/in-memory/ticket-reservations/TicketReservations/TicketReservations.dbmdl +samples/databases/wide-world-importers/workload-drivers/vehicle-location-insert/MultithreadedInMemoryTableInsert/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs +samples/databases/wide-world-importers/workload-drivers/vehicle-location-insert/MultithreadedInMemoryTableInsert/obj/Debug/MultithreadedInMemoryTableInsert.csproj.FileListAbsolute.txt +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/obj/Debug/PopulateAlwaysEncryptedData.Properties.Resources.resources +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/obj/Release/PopulateAlwaysEncryptedData.PopulateAlwaysEncryptedDataMain.resources +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/bin/Debug/PopulateAlwaysEncryptedData.vshost.exe.manifest +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/obj/Debug/PopulateAlwaysEncryptedData.PopulateAlwaysEncryptedDataMain.resources +samples/databases/wide-world-importers/workload-drivers/vehicle-location-insert/MultithreadedInMemoryTableInsert/obj/Release/MultithreadedInMemoryTableInsert.Properties.Resources.resources +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/obj/Release/PopulateAlwaysEncryptedData.Properties.Resources.resources +samples/features/in-memory/ticket-reservations/packages/CircularGauge.1.0.0/ReadMe.txt +*.dacpac +samples/features/in-memory/ticket-reservations/TicketReservations/obj/Release/Model.xml +samples/features/in-memory/ticket-reservations/DemoWorkload/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs +*.dat + +*.user +samples/features/in-memory/ticket-reservations/DemoWorkload/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs +samples/databases/wide-world-importers/workload-drivers/vehicle-location-insert/MultithreadedInMemoryTableInsert/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs +samples/features/in-memory/ticket-reservations/DemoWorkload/bin/Debug/DemoWorkload.vshost.exe.config +samples/features/in-memory/ticket-reservations/DemoWorkload/obj/Release/DemoWorkload.Properties.Resources.resources +samples/databases/wide-world-importers/wwi-integration-etl/Daily ETL/obj/Development/Project.params +samples/features/in-memory/ticket-reservations/DemoWorkload/obj/Debug/DemoWorkload.csproj.FileListAbsolute.txt +samples/features/in-memory/iot-smart-grid/Db/obj/Release/Model.xml +samples/applications/iot-smart-grid/DataGenerator/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs +samples/databases/wide-world-importers/workload-drivers/order-insert/MultithreadedOrderInsert/bin/Debug/MultithreadedOrderInsert.exe.config +samples/features/in-memory/iot-smart-grid/ConsoleClient/bin/Release/ConsoleClient.exe.config +*.jfm +samples/features/in-memory/ticket-reservations/TicketReservations/bin/Release/TicketReservations.publish.sql +samples/applications/iot-smart-grid/ConsoleClient/bin/Release/ConsoleClient.exe.config +samples/applications/iot-smart-grid/Db/Db.dbmdl +samples/databases/wide-world-importers/workload-drivers/order-insert/MultithreadedOrderInsert/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs +samples/databases/wide-world-importers/wwi-dw-ssdt/wwi-dw-ssdt/obj/Debug/Model.xml +samples/databases/wide-world-importers/wwi-dw-ssdt/wwi-dw-ssdt/WideWorldImportersDW.dbmdl +samples/features/in-memory/iot-smart-grid/WinFormsClient/bin/Release/Reports/PowerDashboard.pbix +samples/databases/wide-world-importers/wwi-ssdt/wwi-ssdt/WideWorldImporters.dbmdl +samples/databases/wide-world-importers/workload-drivers/order-insert/MultithreadedOrderInsert/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs +samples/databases/wide-world-importers/wwi-ssasmd/wwi-ssasmd/bin/WWI-SSASMD.asdatabase +samples/applications/iot-smart-grid/Db/obj/Release/Db.sqlproj.FileListAbsolute.txt +*.manifest +samples/applications/iot-smart-grid/WinFormsClient/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs +samples/databases/wide-world-importers/wwi-ssasmd/wwi-ssasmd/obj/Development/IncrementalShapshot.xml +samples/applications/iot-smart-grid/ConsoleClient/bin/Release/Reports/PowerDashboard.pbix +samples/applications/iot-smart-grid/Db/obj/Release/Model.xml +samples/databases/wide-world-importers/workload-drivers/order-insert/MultithreadedOrderInsert/obj/Release/MultithreadedOrderInsert.csproj.FileListAbsolute.txt +samples/applications/iot-smart-grid/ConsoleClient/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs +samples/applications/iot-smart-grid/WinFormsClient/bin/Release/Client.exe.config +samples/databases/wide-world-importers/workload-drivers/order-insert/MultithreadedOrderInsert/bin/Release/MultithreadedOrderInsert.exe.config +samples/databases/wide-world-importers/workload-drivers/order-insert/MultithreadedOrderInsert/obj/Debug/MultithreadedInMemoryTableInsert.MultithreadedOrderInsertMain.resources +/samples/features/epm-framework/5.0/2Reporting/PolicyReports/PolicyEvaluationErrors.rdl.data +/samples/features/epm-framework/5.0/2Reporting/PolicyReports/PolicyEvaluationErrorDetails.rdl.data +/samples/features/epm-framework/5.0/2Reporting/PolicyReports/PolicyEvaluationDetails.rdl.data +/samples/features/epm-framework/5.0/2Reporting/PolicyReports/PolicyDetails.rdl.data +/samples/features/epm-framework/5.0/2Reporting/PolicyReports/PolicyDashboard.rdl.data +/samples/features/epm-framework/5.0/2Reporting/PolicyReports/bin/Debug +/samples/features/epm-framework/5.0/2Reporting/PolicyReports/PolicyDashboard - Backup.rdl +/samples/features/epm-framework/5.0/2Reporting/PolicyReports/PolicyDashboardFiltered.rdl.data +samples/features/sql-management-objects/src/out/CodeCoverage/CodeCoverage.config + +# Certificates +*.pem +*.p12 + +# Composer +/vendor/ \ No newline at end of file diff --git a/ALT_AJAX.mwb b/ALT_AJAX.mwb new file mode 100644 index 0000000..aec9c28 Binary files /dev/null and b/ALT_AJAX.mwb differ diff --git a/ALT_AJAX.sql b/ALT_AJAX.sql new file mode 100644 index 0000000..0dcb1ac --- /dev/null +++ b/ALT_AJAX.sql @@ -0,0 +1,349 @@ +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; + + +DROP SCHEMA IF EXISTS `AJAX_CURR` ; +CREATE SCHEMA IF NOT EXISTS `AJAX_CURR` DEFAULT CHARACTER SET utf8 ; +USE `AJAX_CURR` ; + + +DROP TABLE IF EXISTS `AJAX_CURR`.`hub` ; + +CREATE TABLE IF NOT EXISTS `AJAX_CURR`.`hub` ( + `id` INT NOT NULL AUTO_INCREMENT, + `model` VARCHAR(45) NOT NULL DEFAULT 'hub', + `hub_status` VARCHAR(45) NOT NULL DEFAULT 'offline', + `service_life_end_time` DATETIME NULL DEFAULT (CURRENT_DATE + INTERVAL 10 YEAR), + `warranty_end_time` DATETIME NULL DEFAULT (CURRENT_DATE + INTERVAL 2 YEAR), + `users_max` INT NULL DEFAULT 50, + `rooms_max` INT NULL DEFAULT 50, + `devices_max` INT NULL DEFAULT 100, + `sirens_max` INT NULL DEFAULT 10, + `on_battery` BIT NULL DEFAULT 0, + PRIMARY KEY (`id`)) +ENGINE = InnoDB; + +INSERT INTO `AJAX_CURR`.`hub` (`id`,`model`,`hub_status`,`service_life_end_time`,`warranty_end_time`,`users_max`,`rooms_max`,`devices_max`,`sirens_max`,`on_battery`) +VALUES (1,'hub_plus','online',(CURRENT_DATE + INTERVAL 15 YEAR),(CURRENT_DATE + INTERVAL 5 YEAR),99,50,150,10,0); +INSERT INTO `AJAX_CURR`.`hub` (`id`,`model`,`hub_status`,`service_life_end_time`,`warranty_end_time`,`users_max`,`rooms_max`,`devices_max`,`sirens_max`,`on_battery`) +VALUES (2,'hub','offline',default,default,default,default,100,10,0); +INSERT INTO `AJAX_CURR`.`hub` (`id`,`model`,`hub_status`,`service_life_end_time`,`warranty_end_time`,`users_max`,`rooms_max`,`devices_max`,`sirens_max`,`on_battery`) +VALUES (3,'hub2_2g','online',default,default,default,default,150,20,1); +INSERT INTO `AJAX_CURR`.`hub` (`id`,`model`,`hub_status`,`service_life_end_time`,`warranty_end_time`,`users_max`,`rooms_max`,`devices_max`,`sirens_max`,`on_battery`) +VALUES (4,'hub2_4g','online',default,default,150,default,150,20,1); +INSERT INTO `AJAX_CURR`.`hub` (`id`,`model`,`hub_status`,`service_life_end_time`,`warranty_end_time`,`users_max`,`rooms_max`,`devices_max`,`sirens_max`,`on_battery`) +VALUES (5,'hub2_4g','online',default,default,150,default,150,20,0); +INSERT INTO `AJAX_CURR`.`hub` (`id`,`model`,`hub_status`,`service_life_end_time`,`warranty_end_time`,`users_max`,`rooms_max`,`devices_max`,`sirens_max`,`on_battery`) +VALUES (6,'hub2_plus','online',default,default,200,default,200,20,0); +INSERT INTO `AJAX_CURR`.`hub` (`id`,`model`,`hub_status`,`service_life_end_time`,`warranty_end_time`,`users_max`,`rooms_max`,`devices_max`,`sirens_max`,`on_battery`) +VALUES (7,'hub2_2g','online',default,default,default,default,150,20,1); +INSERT INTO `AJAX_CURR`.`hub` (`id`,`model`,`hub_status`,`service_life_end_time`,`warranty_end_time`,`users_max`,`rooms_max`,`devices_max`,`sirens_max`,`on_battery`) +VALUES (8,'hub','offline',default,default,default,default,100,10,0); +INSERT INTO `AJAX_CURR`.`hub` (`id`,`model`,`hub_status`,`service_life_end_time`,`warranty_end_time`,`users_max`,`rooms_max`,`devices_max`,`sirens_max`,`on_battery`) +VALUES (9,'hub2_4g','online',default,default,150,default,150,20,0); +INSERT INTO `AJAX_CURR`.`hub` (`id`,`model`,`hub_status`,`service_life_end_time`,`warranty_end_time`,`users_max`,`rooms_max`,`devices_max`,`sirens_max`,`on_battery`) +VALUES (10,'hub_plus','online',(CURRENT_DATE + INTERVAL 20 YEAR),(CURRENT_DATE + INTERVAL 10 YEAR),99,50,150,10,0); + +DROP TABLE IF EXISTS `AJAX_CURR`.`devices_group` ; + +CREATE TABLE IF NOT EXISTS `AJAX_CURR`.`devices_group` ( + `id` INT NOT NULL AUTO_INCREMENT, + `group_name` VARCHAR(45) NOT NULL, + PRIMARY KEY (`id`)) +ENGINE = InnoDB; + +INSERT INTO `AJAX_CURR`.`devices_group` (`id`,`group_name`) +VALUES + (1,'kitchen'), + (2,'garage'), + (3,'staff room'), + (4,'entrance'), + (5,'back alley'), + (6,'outside'), + (7,'living room'), + (8,'basement'), + (9,'bathroom'), + (10,'office'); + +DROP TABLE IF EXISTS `AJAX_CURR`.`device`; + +CREATE TABLE IF NOT EXISTS `ajax_curr`.`device` ( + `id` INT NOT NULL AUTO_INCREMENT, + `model` VARCHAR(45) NOT NULL DEFAULT 'unknown', + `device_status` VARCHAR(45) NOT NULL DEFAULT 'offline', + `service_life_end_time` DATETIME NULL DEFAULT (curdate() + interval 10 year), + `warranty_end_time` DATETIME NULL DEFAULT (curdate() + interval 2 year), + `on_battery` BIT(1) NULL DEFAULT b'0', + `hub_id` INT NULL DEFAULT NULL, + `devices_group_id` INT NULL DEFAULT NULL, + PRIMARY KEY (`id`), + INDEX `fk_device_hub_idx` (`hub_id` ASC) VISIBLE, + INDEX `fk_device_device_group1_idx` (`devices_group_id` ASC) VISIBLE, + CONSTRAINT `fk_device_device_group1_idx` + FOREIGN KEY (`devices_group_id`) + REFERENCES `AJAX_CURR`.`devices_group` (`id`) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_device_hub_idx` + FOREIGN KEY (`hub_id`) + REFERENCES `AJAX_CURR`.`hub` (`id`) + ON DELETE NO ACTION + ON UPDATE NO ACTION + ) +ENGINE = InnoDB; + +INSERT INTO `AJAX_CURR`.`device` (`id`,`model`,`device_status`,`service_life_end_time`,`warranty_end_time`,`on_battery`,`hub_id`,`devices_group_id`) +VALUES (1,'motion_cam','online',default,default,1,1,1); +INSERT INTO `AJAX_CURR`.`device` (`id`,`model`,`device_status`,`service_life_end_time`,`warranty_end_time`,`on_battery`,`hub_id`,`devices_group_id`) +VALUES (2,'motion_protect','online',default,default,1,2,1); +INSERT INTO `AJAX_CURR`.`device` (`id`,`model`,`device_status`,`service_life_end_time`,`warranty_end_time`,`on_battery`,`hub_id`,`devices_group_id`) +VALUES (3,'motion_protect_plus','online',(CURRENT_DATE + INTERVAL 20 YEAR),(CURRENT_DATE + INTERVAL 10 YEAR),0,2,1); +INSERT INTO `AJAX_CURR`.`device` (`id`,`model`,`device_status`,`service_life_end_time`,`warranty_end_time`,`on_battery`,`hub_id`,`devices_group_id`) +VALUES (4,'combi_protect','online',default,default,0,2,1); +INSERT INTO `AJAX_CURR`.`device` (`id`,`model`,`device_status`,`service_life_end_time`,`warranty_end_time`,`on_battery`,`hub_id`,`devices_group_id`) +VALUES (5,'motion_protect_curtain','offline',default,default,1,4,1); +INSERT INTO `AJAX_CURR`.`device` (`id`,`model`,`device_status`,`service_life_end_time`,`warranty_end_time`,`on_battery`,`hub_id`,`devices_group_id`) +VALUES (6,'door_protect','online',default,default,1,5,3); +INSERT INTO `AJAX_CURR`.`device` (`id`,`model`,`device_status`,`service_life_end_time`,`warranty_end_time`,`on_battery`,`hub_id`,`devices_group_id`) +VALUES (7,'glass_protect','online',default,default,1,6,5); +INSERT INTO `AJAX_CURR`.`device` (`id`,`model`,`device_status`,`service_life_end_time`,`warranty_end_time`,`on_battery`,`hub_id`,`devices_group_id`) +VALUES (8,'dual_curtain_outdoor','online',(CURRENT_DATE + INTERVAL 18 YEAR),(CURRENT_DATE + INTERVAL 10 YEAR),1,6,10); +INSERT INTO `AJAX_CURR`.`device` (`id`,`model`,`device_status`,`service_life_end_time`,`warranty_end_time`,`on_battery`,`hub_id`,`devices_group_id`) +VALUES (9,'glass_protect','offline',default,default,1,6,8); +INSERT INTO `AJAX_CURR`.`device` (`id`,`model`,`device_status`,`service_life_end_time`,`warranty_end_time`,`on_battery`,`hub_id`,`devices_group_id`) +VALUES (10,'leaks_protect','online',default,default,1,8,8); + + +DROP TABLE IF EXISTS `AJAX_CURR`.`notification` ; + +CREATE TABLE IF NOT EXISTS `AJAX_CURR`.`notification` ( + `id` INT NOT NULL AUTO_INCREMENT, + `timestamp` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + `notification_type` VARCHAR(45) NOT NULL DEFAULT 'warning', + `device_id` INT NULL, + `hub_id` INT NULL, + PRIMARY KEY (`id`), + INDEX `fk_notification_device1_idx` (`device_id` ASC) VISIBLE, + INDEX `fk_notification_hub1_idx` (`hub_id` ASC) VISIBLE, + CONSTRAINT `fk_notification_device1` + FOREIGN KEY (`device_id`) + REFERENCES `AJAX_CURR`.`device` (`id`) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_notification_hub1` + FOREIGN KEY (`hub_id`) + REFERENCES `AJAX_CURR`.`hub` (`id`) + ON DELETE NO ACTION + ON UPDATE NO ACTION) +ENGINE = InnoDB; + +INSERT INTO `AJAX_CURR`.`notification` (`id`,`notification_type`,`device_id`,`hub_id`) +VALUES (1,'warning',NULL,8); +INSERT INTO `AJAX_CURR`.`notification` (`id`,`notification_type`,`device_id`,`hub_id`) +VALUES (2,'alert',1,NULL); +INSERT INTO `AJAX_CURR`.`notification` (`id`,`notification_type`,`device_id`,`hub_id`) +VALUES (3,'low_battery',2,NULL); +INSERT INTO `AJAX_CURR`.`notification` (`id`,`notification_type`,`device_id`,`hub_id`) +VALUES (4,'door_opened',6,NULL); +INSERT INTO `AJAX_CURR`.`notification` (`id`,`notification_type`,`device_id`,`hub_id`) +VALUES (5,'door_closed',6,NULL); +INSERT INTO `AJAX_CURR`.`notification` (`id`,`notification_type`,`device_id`,`hub_id`) +VALUES (6,'leak_detected',10,NULL); +INSERT INTO `AJAX_CURR`.`notification` (`id`,`notification_type`,`device_id`,`hub_id`) +VALUES (7,'suspicious_activity',4,NULL); +INSERT INTO `AJAX_CURR`.`notification` (`id`,`notification_type`,`device_id`,`hub_id`) +VALUES (8,'alert',4,NULL); +INSERT INTO `AJAX_CURR`.`notification` (`id`,`notification_type`,`device_id`,`hub_id`) +VALUES (9,'low_battery',8,NULL); +INSERT INTO `AJAX_CURR`.`notification` (`id`,`notification_type`,`device_id`,`hub_id`) +VALUES (10,'low_battery',9,NULL); + + +DROP TABLE IF EXISTS `AJAX_CURR`.`users_group` ; + +CREATE TABLE IF NOT EXISTS `AJAX_CURR`.`users_group` ( + `id` INT NOT NULL AUTO_INCREMENT, + `group_name` VARCHAR(45) NOT NULL, + `group_description` VARCHAR(150) NULL DEFAULT 'Lorem ipsum', + `hub_id` INT NULL, + PRIMARY KEY (`id`), + INDEX `fk_group_hub1_idx` (`hub_id` ASC) VISIBLE, + CONSTRAINT `fk_group_hub1` + FOREIGN KEY (`hub_id`) + REFERENCES `AJAX_CURR`.`hub` (`id`) + ON DELETE NO ACTION + ON UPDATE NO ACTION) +ENGINE = InnoDB; + +-- groups are made by the hub user +INSERT INTO `AJAX_CURR`.`users_group` (`id`,`group_name`,`group_description`,`hub_id`) +VALUES (1,'owners','people who own this hub, have owner privileges',1); +INSERT INTO `AJAX_CURR`.`users_group` (`id`,`group_name`,`group_description`,`hub_id`) +VALUES (2,'admins','people who have all posible permissions',1); +INSERT INTO `AJAX_CURR`.`users_group` (`id`,`group_name`,`group_description`,`hub_id`) +VALUES (3,'guards','people who can only check devices status',1); +INSERT INTO `AJAX_CURR`.`users_group` (`id`,`group_name`,`group_description`,`hub_id`) +VALUES (4,'admins',NULL,3); +INSERT INTO `AJAX_CURR`.`users_group` (`id`,`group_name`,`group_description`,`hub_id`) +VALUES (5,'guarding','check devices status',2); +INSERT INTO `AJAX_CURR`.`users_group` (`id`,`group_name`,`group_description`,`hub_id`) +VALUES (6,'home',NULL,4); +INSERT INTO `AJAX_CURR`.`users_group` (`id`,`group_name`,`group_description`,`hub_id`) +VALUES (7,'random',NULL,4); +INSERT INTO `AJAX_CURR`.`users_group` (`id`,`group_name`,`group_description`,`hub_id`) +VALUES (8,'owners','owners of this hub',7); +INSERT INTO `AJAX_CURR`.`users_group` (`id`,`group_name`,`group_description`,`hub_id`) +VALUES (9,'children','owners of this hub',7); +INSERT INTO `AJAX_CURR`.`users_group` (`id`,`group_name`,`group_description`,`hub_id`) +VALUES (10,'admins','all posible permissions',8); + + +DROP TABLE IF EXISTS `AJAX_CURR`.`user` ; + +CREATE TABLE IF NOT EXISTS `AJAX_CURR`.`user` ( + `id` INT NOT NULL AUTO_INCREMENT, + `email` VARCHAR(45) NOT NULL DEFAULT 'somemail@lolbit.com', + `user_password` VARCHAR(45) NOT NULL DEFAULT 'admin', + `date_created` DATETIME NOT NULL DEFAULT (CURRENT_DATE), + `user_name` VARCHAR(45) NOT NULL DEFAULT 'undefined', + `users_group_id` INT NULL, + PRIMARY KEY (`id`), + UNIQUE INDEX `email_UNIQUE` (`email` ASC) VISIBLE, + INDEX `fk_user_group1_idx` (`users_group_id` ASC) VISIBLE, + CONSTRAINT `fk_user_group1` + FOREIGN KEY (`users_group_id`) + REFERENCES `AJAX_CURR`.`users_group` (`id`) + ON DELETE NO ACTION + ON UPDATE NO ACTION) +ENGINE = InnoDB; + +INSERT INTO `AJAX_CURR`.`user` (`id`,`email`,`user_password`,`date_created`,`user_name`,`users_group_id`) +VALUES + (1,'sit.amet.risus@aol.couk','CXY46CKU5LF','2021-10-26 12:15:35','Adrian',7), + (2,'tristique.pellentesque.tellus@hotmail.net','FLD22VJW7LP','2022-04-8 10:50:14','Oprah',7), + (3,'at.iaculis@google.net','RSL21QLS2YI','2022-07-9 10:05:04','John',1), + (4,'enim.consequat@protonmail.ca','PUP58PPI6UG','2021-12-21 05:08:33','Flynn',7), + (5,'ac.mattis@protonmail.ca','XIP05FJS3AK','2022-03-16 07:39:47','Ila',1), + (6,'nam.consequat.dolor@protonmail.ca','ZWW48EZV4AV','2023-02-3 10:39:57','Chantale',4), + (7,'turpis@yahoo.net','DDS68LMQ8DY','2023-02-18 07:22:40','Aurora',6), + (8,'egestas.urna@hotmail.net','CTV39QYI4NV','2022-10-2 11:55:40','Elliott',4), + (9,'velit.eget@protonmail.net','OJG06TKO7NN','2022-01-5 10:02:07','Wilma',5), + (10,'consectetuer@yahoo.org','NLN85RUU2CS','2021-11-25 03:26:39','Drake',10); + + +DROP TABLE IF EXISTS `AJAX_CURR`.`user_has_hub` ; + +CREATE TABLE IF NOT EXISTS `AJAX_CURR`.`user_has_hub` ( + `user_id` INT NOT NULL, + `hub_id` INT NOT NULL, + PRIMARY KEY (`user_id`, `hub_id`), + INDEX `fk_user_has_hub_hub1_idx` (`hub_id` ASC) VISIBLE, + INDEX `fk_user_has_hub_user1_idx` (`user_id` ASC) VISIBLE, + CONSTRAINT `fk_user_has_hub_user1` + FOREIGN KEY (`user_id`) + REFERENCES `AJAX_CURR`.`user` (`id`) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_user_has_hub_hub1` + FOREIGN KEY (`hub_id`) + REFERENCES `AJAX_CURR`.`hub` (`id`) + ON DELETE NO ACTION + ON UPDATE NO ACTION) +ENGINE = InnoDB; + +INSERT INTO `AJAX_CURR`.`user_has_hub` (`user_id`,`hub_id`) +VALUES + (10,3), + (7,4), + (8,6), + (3,5), + (5,10), + (1,1), + (8,3), + (7,5), + (6,3), + (1,10); + + +DROP TABLE IF EXISTS `AJAX_CURR`.`permission` ; + +CREATE TABLE IF NOT EXISTS `AJAX_CURR`.`permission` ( + `id` INT NOT NULL AUTO_INCREMENT, + `permission_name` VARCHAR(45) NOT NULL, + `hub_id` INT NULL, + `user_id` INT NULL, + `group_id` INT NULL, + `device_id` INT NULL, + PRIMARY KEY (`id`), + INDEX `fk_permission_hub1_idx` (`hub_id` ASC) VISIBLE, + INDEX `fk_permission_user1_idx` (`user_id` ASC) VISIBLE, + INDEX `fk_permission_group1_idx` (`group_id` ASC) VISIBLE, + INDEX `fk_permission_device1_idx` (`device_id` ASC) VISIBLE, + CONSTRAINT `fk_permission_hub1` + FOREIGN KEY (`hub_id`) + REFERENCES `AJAX_CURR`.`hub` (`id`) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_permission_user1` + FOREIGN KEY (`user_id`) + REFERENCES `AJAX_CURR`.`user` (`id`) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_permission_group1` + FOREIGN KEY (`group_id`) + REFERENCES `AJAX_CURR`.`users_group` (`id`) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_permission_device1` + FOREIGN KEY (`device_id`) + REFERENCES `AJAX_CURR`.`device` (`id`) + ON DELETE NO ACTION + ON UPDATE NO ACTION) +ENGINE = InnoDB; + +INSERT INTO `AJAX_CURR`.`permission` (`id`,`permission_name`,`hub_id`,`user_id`,`group_id`,`device_id`) +VALUES + (1,'change properties of this Hub',1,4,null,null), + (2,'add rexes to this hub',1,4,null,null), + (4,'remove devices from system',1,4,null,null), + (5,'turn on/off',null,null,2,3), + (6,'change state',null,7,null,3), + (7,'turn on/off',null,7,null,6), + (8,'factory reset',1,7,null,null), + (9,'add users to groups',1,7,null,null), + (10,'create groups',1,7,null,null); + + +DROP TABLE IF EXISTS `AJAX_CURR`.`rex` ; + +CREATE TABLE IF NOT EXISTS `AJAX_CURR`.`rex` ( + `id` INT NOT NULL AUTO_INCREMENT, + `rex_name` VARCHAR(45) NOT NULL DEFAULT 'undefined', + `rex_range` VARCHAR(45) NOT NULL DEFAULT 'undefined', + `hub_id` INT NULL, + PRIMARY KEY (`id`), + INDEX `fk_rex_hub1_idx` (`hub_id` ASC) VISIBLE, + CONSTRAINT `fk_rex_hub1` + FOREIGN KEY (`hub_id`) + REFERENCES `AJAX_CURR`.`hub` (`id`) + ON DELETE NO ACTION + ON UPDATE NO ACTION) +ENGINE = InnoDB; + +INSERT INTO `AJAX_CURR`.`rex` (`id`,`rex_name`,`rex_range`,`hub_id`) +VALUES + (1,'rex',1700,2), + (2,'rex',1600,4), + (3,'rex',1400,8), + (4,'rex2',1800,2), + (5,'rex2',1700,7), + (6,'rex2',1600,7), + (7,'rex',1400,6), + (8,'rex',1800,4), + (9,'rex',1700,8), + (10,'rex2',1600,8); + +SET SQL_MODE=@OLD_SQL_MODE; +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; diff --git a/README.md b/README.md index 681d633..9233559 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ -# Databases - +# Lab 1 +