-- LINQ to SQL Test Harness: Get Stored Procs

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_GetCustomersByCountry')
DROP PROCEDURE usp_GetCustomersByCountry;

-----------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_GetCustomerByID')
DROP PROCEDURE usp_GetCustomerByID;

-----------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_GetEmployees')
DROP PROCEDURE usp_GetEmployees;

-----------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_GetEmployeesByCustomerCountry')
DROP PROCEDURE usp_GetEmployeesByCustomerCountry;

-----------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_GetEmployeeByID')
DROP PROCEDURE usp_GetEmployeeByID;

-----------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_GetShippers')
DROP PROCEDURE usp_GetShippers;

-----------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_GetShipperByID')
DROP PROCEDURE usp_GetShipperByID;

-----------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_GetShippersByCustomerCountry')
DROP PROCEDURE usp_GetShippersByCustomerCountry;

-----------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_GetOrdersByCountry')
DROP PROCEDURE usp_GetOrdersByCountry;

-----------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_GetOrdersByCustomerID')
DROP PROCEDURE usp_GetOrdersByCustomerID;

-----------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_GetOrdersByCountryPaged')
DROP PROCEDURE usp_GetOrdersByCountryPaged;

-----------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_GetOrdersByCountryPagedAndSorted')
DROP PROCEDURE usp_GetOrdersByCountryPagedAndSorted;

-----------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_GetOrdersByCountryPagedAndSortedExt')
DROP PROCEDURE usp_GetOrdersByCountryPagedAndSortedExt;

-----------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_GetOrdersCountByCountry')
DROP PROCEDURE usp_GetOrdersCountByCountry;

-----------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_GetOrder_DetailsByCountry')
DROP PROCEDURE usp_GetOrder_DetailsByCountry;

-----------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_GetOrder_DetailsByOrderID')
DROP PROCEDURE usp_GetOrder_DetailsByOrderID;

-----------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_GetProducts')
DROP PROCEDURE usp_GetProducts;

-----------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_GetSuppliers')
DROP PROCEDURE usp_GetSuppliers;

-----------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_GetCategories')
DROP PROCEDURE usp_GetCategories;

-----------------------------------------------
-- LINQ to SQL Test Harness: CUD for Customer Stored Procs: Insert 

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_InsertCustomer')
DROP PROCEDURE usp_InsertCustomer;

-----------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_UpdateCustomer')
DROP PROCEDURE usp_UpdateCustomer;

-----------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_DeleteCustomer')
DROP PROCEDURE usp_DeleteCustomer;

-----------------------------------------------
-- LINQ to SQL Test Harness: UD for Customer Stored Procs (Concurrency Control)

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_UpdateCustomerCC')
DROP PROCEDURE usp_UpdateCustomerCC;

-----------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_DeleteCustomerCC')
DROP PROCEDURE usp_DeleteCustomerCC;

-----------------------------------------------
-- LINQ to SQL Test Harness: CUD for Order Stored Procs with BINARY_CHECKSUM Concurrency Control

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_InsertOrderCS')
DROP PROCEDURE usp_InsertOrderCS;

-----------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_UpdateOrderCS')
DROP PROCEDURE usp_UpdateOrderCS;

-----------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_DeleteOrderCS')
DROP PROCEDURE usp_DeleteOrderCS;

-- LINQ to SQL Test Harness: CUD for Order Details Stored Procs with BINARY_CHECKSUM Concurrency Control
-----------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_InsertOrder_DetailCS')
DROP PROCEDURE usp_InsertOrder_DetailCS;

-----------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_UpdateOrder_DetailCS')
DROP PROCEDURE usp_UpdateOrder_DetailCS;

-----------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_DeleteOrder_DetailsByOrderIDCS')
DROP PROCEDURE usp_DeleteOrder_DetailsByOrderIDCS;

-----------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_DeleteOrder_DetailByOrderIDandProductIDCS')
DROP PROCEDURE usp_DeleteOrder_DetailByOrderIDandProductIDCS;

-----------------------------------------------
-- LINQ to SQL Test Harness: CUD for Order Stored Procs without Concurrency Control

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_InsertOrder')
DROP PROCEDURE usp_InsertOrder;

-----------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_UpdateOrder')
DROP PROCEDURE usp_UpdateOrder;

-----------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_DeleteOrder')
DROP PROCEDURE usp_DeleteOrder;

-- LINQ to SQL Test Harness: CUD for Order Details Stored Procs without Concurrency Control
-----------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_InsertOrder_Detail')
DROP PROCEDURE usp_InsertOrder_Detail;

-----------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_UpdateOrder_Detail')
DROP PROCEDURE usp_UpdateOrder_Detail;

-----------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_DeleteOrder_DetailsByOrderID')
DROP PROCEDURE usp_DeleteOrder_DetailsByOrderID;

-----------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_DeleteOrder_DetailByOrderIDandProductID')
DROP PROCEDURE usp_DeleteOrder_DetailByOrderIDandProductID;


-----------------------------------------------
-- LINQ to SQL: Procedures for Customer, Order, and Order_Detail Object Concurrency Control Tests

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_AlterBogusCustomer')
DROP PROCEDURE usp_AlterBogusCustomer;

-----------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_AlterBogusOrder')
DROP PROCEDURE usp_AlterBogusOrder;

-----------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'usp_AlterBogusDetail')
DROP PROCEDURE usp_AlterBogusDetail

-----------------------------------------------