Advertisement
Guest User

Untitled

a guest
Apr 22nd, 2018
234
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 10.56 KB | None | 0 0
  1.  
  2. --
  3. -- Create tables
  4. --
  5.  
  6. CREATE TABLE `accounts` (
  7.   `id` int(11) NOT NULL AUTO_INCREMENT,
  8.   `account_name` varchar(255) NOT NULL,
  9.   `firstname` varchar(255) NOT NULL,
  10.   `surname` varchar(255) NOT NULL,
  11.   `nip` varchar(11) NOT NULL,
  12.   `regon` varchar(255) NOT NULL,
  13.   `email` varchar(255) NOT NULL,
  14.   `deleted` tinyint(1) NOT NULL DEFAULT 0,
  15.   `deleted_at` datetime DEFAULT NULL,
  16.   `updated_at` datetime DEFAULT current_timestamp(),
  17.   `created_at` datetime DEFAULT current_timestamp(),
  18.   PRIMARY KEY (`id`)
  19. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  20.  
  21. CREATE TABLE `address` (
  22.   `id` int(11) NOT NULL AUTO_INCREMENT,
  23.   `category` varchar(20) DEFAULT 'primary',
  24.   `house_number` varchar(6) NOT NULL,
  25.   `flat_number` varchar(6) DEFAULT NULL,
  26.   `street` varchar(150) NOT NULL,
  27.   `city` varchar(50) NOT NULL,
  28.   `postalcode` varchar(10) NOT NULL,
  29.   `deleted` tinyint(1) DEFAULT 0,
  30.   `deleted_at` datetime DEFAULT NULL,
  31.   `updated_at` datetime DEFAULT NULL,
  32.   `created_at` datetime DEFAULT NULL,
  33.   PRIMARY KEY (`id`)
  34. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  35.  
  36. CREATE TABLE `calls` (
  37.   `id` int(11) NOT NULL AUTO_INCREMENT,
  38.   `title` varchar(150) NOT NULL DEFAULT 'Rozmowa telefoniczna',
  39.   `description` text DEFAULT NULL,
  40.   `state` varchar(25) DEFAULT 'new',
  41.   `start_at` datetime DEFAULT current_timestamp(),
  42.   `end_at` datetime DEFAULT NULL,
  43.   `account_id` int(11) DEFAULT NULL,
  44.   `lead_id` int(11) DEFAULT NULL,
  45.   `campaign_id` int(11) DEFAULT NULL,
  46.   `deleted` tinyint(1) DEFAULT 0,
  47.   `deleted_at` datetime DEFAULT NULL,
  48.   `updated_at` datetime DEFAULT NULL,
  49.   `created_at` datetime DEFAULT NULL,
  50.   PRIMARY KEY (`id`)
  51.  
  52. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  53.  
  54. CREATE TABLE `campaign` (
  55.   `id` int(11) NOT NULL AUTO_INCREMENT,
  56.   `title` varchar(50) NOT NULL,
  57.   `category` varchar(25) DEFAULT 'email',
  58.   `budget_start` decimal(15,2) NOT NULL,
  59.   `budget_end` decimal(15,2) DEFAULT NULL,
  60.   `start_at` datetime DEFAULT NULL,
  61.   `end_at` datetime DEFAULT NULL,
  62.   `closed` tinyint(1) DEFAULT 0,
  63.   `deleted` tinyint(1) DEFAULT 0,
  64.   `created_at` datetime DEFAULT current_timestamp(),
  65.   `updated_at` datetime DEFAULT NULL,
  66.   `deleted_at` datetime DEFAULT NULL,
  67.   PRIMARY KEY (`id`)
  68. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  69.  
  70. CREATE TABLE `leads` (
  71.   `id` int(11) NOT NULL AUTO_INCREMENT,
  72.   `account_name` varchar(30) NOT NULL,
  73.   `firstname` varchar(30) DEFAULT NULL,
  74.   `surname` varchar(30) DEFAULT NULL,
  75.   `nip` varchar(10) DEFAULT NULL,
  76.   `regon` varchar(12) DEFAULT NULL,
  77.   `deleted` tinyint(1) DEFAULT 0,
  78.   `deleted_at` datetime DEFAULT NULL,
  79.   `updated_at` datetime DEFAULT NULL,
  80.   `created_at` datetime DEFAULT NULL,
  81.   PRIMARY KEY (`id`)
  82. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  83.  
  84. CREATE TABLE `meetings` (
  85.   `id` int(11) NOT NULL AUTO_INCREMENT,
  86.   `title` varchar(150) NOT NULL DEFAULT 'Spotkanie',
  87.   `description` text DEFAULT NULL,
  88.   `state` varchar(25) DEFAULT 'new',
  89.   `start_at` datetime DEFAULT current_timestamp(),
  90.   `end_at` datetime DEFAULT NULL,
  91.   `account_id` int(11) DEFAULT NULL,
  92.   `lead_id` int(11) DEFAULT NULL,
  93.   `campaign_id` int(11) DEFAULT NULL,
  94.   `deleted` tinyint(1) DEFAULT 0,
  95.   `deleted_at` datetime DEFAULT NULL,
  96.   `updated_at` datetime DEFAULT NULL,
  97.   `created_at` datetime DEFAULT NULL,
  98.   PRIMARY KEY (`id`)
  99. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  100.  
  101. CREATE TABLE `notes` (
  102.   `id` int(11) NOT NULL AUTO_INCREMENT,
  103.   `description` text DEFAULT NULL,
  104.   `account_id` int(11) DEFAULT NULL,
  105.   `lead_id` int(11) DEFAULT NULL,
  106.   `campaign_id` int(11) DEFAULT NULL,
  107.   `deleted` tinyint(1) DEFAULT 0,
  108.   `deleted_at` datetime DEFAULT NULL,
  109.   `updated_at` datetime DEFAULT NULL,
  110.   `created_at` datetime DEFAULT NULL,
  111.   PRIMARY KEY (`id`)
  112. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  113.  
  114. CREATE TABLE `opportunities` (
  115.   `id` int(11) NOT NULL AUTO_INCREMENT,
  116.   `name` varchar(50) NOT NULL,
  117.   `expected_value` decimal(13,2) NOT NULL,
  118.   `sum` decimal(13,2) DEFAULT NULL,
  119.   `status` varchar(25) DEFAULT 'new',
  120.   `deleted` tinyint(1) DEFAULT 0,
  121.   `created_at` datetime DEFAULT current_timestamp(),
  122.   `updated_at` datetime DEFAULT NULL,
  123.   `deleted_at` datetime DEFAULT NULL,
  124.   PRIMARY KEY (`id`)
  125. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  126.  
  127. CREATE TABLE `positions` (
  128.   `id` int(11) NOT NULL AUTO_INCREMENT,
  129.   `name` varchar(50) NOT NULL,
  130.   `price` decimal(13,2) NOT NULL,
  131.   `vat` int(11) DEFAULT NULL,
  132.   `quantity` int(11) DEFAULT NULL,
  133.   `deleted` tinyint(1) DEFAULT 0,
  134.   `created_at` datetime DEFAULT current_timestamp(),
  135.   `updated_at` datetime DEFAULT NULL,
  136.   `deleted_at` datetime DEFAULT NULL,
  137.   `opportunity_id` int(11) DEFAULT NULL,
  138.   PRIMARY KEY (`id`)
  139. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  140.  
  141. CREATE TABLE `products` (
  142.     `id` int(11) NOT NULL AUTO_INCREMENT,
  143.     `name` varchar(50) NOT NULL,
  144.     `price` decimal(13,2) NOT NULL,
  145.     `vat` int(11) DEFAULT NULL,
  146.     `deleted` tinyint(1) DEFAULT 0,
  147.     `created_at` datetime DEFAULT current_timestamp(),
  148.     `updated_at` datetime DEFAULT NULL,
  149.     `deleted_at` datetime DEFAULT NULL,
  150.     PRIMARY KEY (`id`)
  151. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  152.  
  153. --
  154. -- Add constraints
  155. --
  156.  
  157. ALTER TABLE `accounts` ADD CONSTRAINT `nip_length` CHECK (length(`nip`) = 10);
  158. ALTER TABLE `accounts` ADD CONSTRAINT `regon_length` CHECK (length(`regon`) >= 9 and length(`regon`) <= 14);
  159. ALTER TABLE `accounts` ADD CONSTRAINT `update_gt_create` CHECK (`updated_at` >= `created_at`);
  160.  
  161. ALTER TABLE `leads` ADD CONSTRAINT `nip_length` CHECK (length(`nip`) = 10);
  162. ALTER TABLE `leads` ADD CONSTRAINT `regon_length` CHECK (length(`regon`) >= 9 and length(`regon`) <= 14);
  163. ALTER TABLE `leads` ADD CONSTRAINT `update_gt_create` CHECK (`updated_at` >= `created_at`);
  164.  
  165. ALTER TABLE `calls` ADD CONSTRAINT `update_gt_create` CHECK (`updated_at` >= `created_at`);
  166. ALTER TABLE `meetings` ADD CONSTRAINT `update_gt_create` CHECK (`updated_at` >= `created_at`);
  167. ALTER TABLE `notes` ADD CONSTRAINT `update_gt_create` CHECK (`updated_at` >= `created_at`);
  168. ALTER TABLE `positions` ADD CONSTRAINT `update_gt_create` CHECK (`updated_at` >= `created_at`);
  169. ALTER TABLE `opportunities` ADD CONSTRAINT `update_gt_create` CHECK (`updated_at` >= `created_at`);
  170. ALTER TABLE `campaign` ADD CONSTRAINT `update_gt_create` CHECK (`updated_at` >= `created_at`);
  171. ALTER TABLE `address` ADD CONSTRAINT `update_gt_create` CHECK (`updated_at` >= `created_at`);
  172. ALTER TABLE `products` ADD CONSTRAINT `update_gt_create` CHECK (`updated_at` >= `created_at`);
  173.  
  174. --
  175. -- Setup indexes
  176. --
  177.  
  178. ALTER TABLE `calls` ADD KEY `account_id` (`account_id`);
  179. ALTER TABLE `calls` ADD KEY `lead_id` (`lead_id`);
  180.  
  181. ALTER TABLE `meetings` ADD KEY `account_id` (`account_id`);
  182. ALTER TABLE `meetings` ADD KEY `lead_id` (`lead_id`);
  183.  
  184. ALTER TABLE `notes` ADD KEY `account_id` (`account_id`);
  185. ALTER TABLE `notes` ADD KEY `lead_id` (`lead_id`);
  186.  
  187. ALTER TABLE `positions` ADD KEY `opportunity_id` (`opportunity_id`);
  188.  
  189. --
  190. -- Add foreign keys
  191. --
  192.  
  193. ALTER TABLE `calls` ADD CONSTRAINT `calls_ibfk_1` FOREIGN KEY (`account_id`) REFERENCES `accounts` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
  194. ALTER TABLE `calls` ADD CONSTRAINT `calls_ibfk_2` FOREIGN KEY (`lead_id`) REFERENCES `leads` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
  195.  
  196. ALTER TABLE `meetings` ADD CONSTRAINT `meetings_ibfk_1` FOREIGN KEY (`account_id`) REFERENCES `accounts` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
  197. ALTER TABLE `meetings` ADD CONSTRAINT `meetings_ibfk_2` FOREIGN KEY (`lead_id`) REFERENCES `leads` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
  198.  
  199. ALTER TABLE `notes` ADD CONSTRAINT `notes_ibfk_1` FOREIGN KEY (`lead_id`) REFERENCES `leads` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
  200. ALTER TABLE `notes` ADD CONSTRAINT `notes_ibfk_2` FOREIGN KEY (`account_id`) REFERENCES `accounts` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
  201.  
  202. ALTER TABLE `positions` ADD CONSTRAINT `positions_ibfk_1` FOREIGN KEY (`opportunity_id`) REFERENCES `opportunities` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION;
  203.  
  204.  
  205. --
  206. -- Load testing data
  207. --
  208.  
  209. INSERT INTO  `accounts`
  210. (`id`, `account_name`, `firstname`, `surname`, `nip`, `regon`, `email`, `deleted`, `deleted_at`)
  211. VALUES
  212. (1, 'Testowa firma 1', 'Bogdan', 'Testowy', '6786536251', '7863746527', 'bogdan@testowa1.pl', 0, NULL),
  213. (2, 'Testowa firma 2', 'Romek', 'Boch', '5766536251', '17865367256', 'romek@testowa2.pl', 0, NULL),
  214. (3, 'Testowa firma 3', 'Mateus', 'SzRz', '8888836251', '7864758923', 'szrz@szrz.pl', 0, NULL);
  215.  
  216. INSERT INTO `campaign` ( `id`, `title`, `category`, `budget_start`, `budget_end`, `start_at`, `end_at`, `closed`)
  217. VALUES
  218. (1, 'Kampania pozyskania T223', 'telefoniczna', 150000, NULL, '2018-03-01', '2018-05-01', 0);
  219.  
  220. INSERT INTO `products` (`id`, `name`, `price`, `vat`)
  221. VALUES
  222. (1, 'Plyta głowna | socket 775', 500.12, 23),
  223. (2, 'Processor CORE 2 DUO', 150.50, 23);
  224.  
  225.  
  226. --
  227. -- Procedury
  228. --
  229.  
  230.  
  231. DELIMITER //
  232.  
  233. CREATE PROCEDURE addOpportunityPosition (
  234.     IN opportunityID INT,
  235.     IN productId INT,
  236.     IN quantity INT
  237. )
  238. BEGIN
  239.  
  240.     INSERT INTO `positions` (`name`, `price`, `vat`, `quantity`, `opportunity_id`)
  241.     SELECT `name`, `price`, `vat`, quantity, opportunityId
  242.         FROM `products`
  243.         WHERE `id` = productId;
  244.  
  245. END //
  246.  
  247. CREATE PROCEDURE recalcOpportunity (
  248.     IN opportunityID INT
  249. )
  250. BEGIN
  251.  
  252.     UPDATE `opportunities` SET `sum` = (
  253.             SELECT SUM(`price` * `quantity`)
  254.             FROM `positions`
  255.             WHERE `opportunity_id` = opportunityId AND
  256.                 `deleted` = 0
  257.         )
  258.     WHERE `id` = opportunityId;
  259.  
  260. END //
  261.  
  262. DELIMITER ;//
  263.  
  264. --
  265. -- Symulowanie akcji aplikacji
  266. --
  267.  
  268. -- Pracownik call center wykonal do pana Bogdana z firmy testowej 1 telefon z oferta
  269. -- w ramach pierwszej kampanii marketingowej
  270. -- zostal jednak wysmiany i nie zostal przeprowadzone dalsze akcje
  271. INSERT INTO `calls` (`title`, `description`, `state`, `start_at`, `end_at`, `account_id`, `lead_id`, `campaign_id`)
  272. VALUES
  273. ('Brak merytoryczność rozmowy', 'Nie chciał rozmawiać, kpił sobie, próbował udowadniać, że się nie opłaca.',
  274. 'completed', now(), date_sub(now(), interval 15 minute), 1, null, 1);
  275.  
  276.  
  277. -- Pracownik call center wykonal do pana Romana z firmy testowej 2 telefon z oferta
  278. -- w ramach pierwszej kampanii marketingowej
  279. -- Pan Roman zamowil 2 produkty
  280. START TRANSACTION;
  281.  
  282. INSERT INTO `calls` (`title`, `description`, `state`, `start_at`, `end_at`, `account_id`, `lead_id`, `campaign_id`)
  283. VALUES
  284. ('Zakończona sukcesem', 'Doprowadzone do tranzakcji.',
  285. 'completed', now(), date_sub(now(), interval 25 minute), 2, null, 1);
  286.  
  287. INSERT INTO `opportunities` (`id`, `name`, `expected_value`, `sum`, `status`)
  288. VALUES
  289. (1, 'Test1', 1301.54, 0.0, 'new');
  290.  
  291. CALL addOpportunityPosition(1, 1, 2);
  292. CALL addOpportunityPosition(1, 2, 2);
  293. CALL recalcOpportunity(1);
  294.  
  295. COMMIT;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement