SaaS [dbbuilder] Generator-instancji + procedura tworzenia
Materiały / linki
- https://github.com/paanda-io/paanda-db -kod db
- https://github.com/kotynia/platforma-db - kod db platforma
- https://github.com/sethreno/schemazen - narzedzie do skryptowania >
- https://dbup.readthedocs.io/en/latest/ - executor skyptow >
- customowe programowanie
- czytamy wszsytkie pliki z folderu \\paanda-db
- uruchamiamy po kolei skrypty
- obslugujemy bledy ktore sie pojawia
- SQL SERVER TESTOWY
192.168.8.200
Proces rejestracji
Step 1 | Wybór cennika | zapamiętujemy liczbę użytkowników
|
Step 2 | Wprowadzenie formularza |
|
Step 3 | System wywolanie api |
https://localhost/api/hosting/confirm/25dc2f30-b5ca-827f-0f70-48d9674ec947 TEST http://localhost/api/hosting/signup/{hosting_domain} { "hosting_domaine":"platforma", "hosting_promo_code":"2021STANDARD pa2020", "hosting_users_max ":10, "hosting_email":"marcin@kotynia.com", "hosting_vat":"7272351852"}
|
Step 4 | uzytkownik | uzytkownik: potweirdza link który otrzymuje
|
step 5 | system |
|
Szukanie wolnej wygenerowanej instancji , uzupelnienie
SELECT [hosting_uuid]
FROM [platforma-api].[dbo].[hosting]
where hosting_status =0
-- hosting_status =1 instancja zajeta
---- dodanie przygotowanej instancji do oczekiwania na pobranie
insert into hosting_instance
(hosting_instance_db,hosting_instance_server)
values
('test2','s01.platformacrm.pl')
DBBUILDER Tool do tworzenia instancji
stworzyc repozytorium generator-instancji
- \apliakcja\app
- \apliakcja\paanda-db >> pobieramy recznie kod bazy z repozytorium dla paandy
- \apliakcja\platforma-db >>pobieramy recznie kod bazy z repozytorium dla platformaerp
Wymagania
- connection w konfiguracji
- parametr ilosc instancji do zalozeniea by default 10
- sciezki do repozytorium paandy zapisane w appsettings
- sciezki do repozytorium platformy zapisane w appsettings
- w petli to moze dzialac co minute
Kroki automatu
- 0. sprawdzamy ile jest instancji jezeli mneij niz 10 to dodajemy 10
--zakladamy ze co najmniej 1 wpis zawsze jest
--zwraca ilosc isntancji
SELECT count(*)
FROM [platforma-api].[dbo].[hosting_instance]
--STRUKTURA hosting_instance_db,hosting_instance_server
- Pobieramnie nazwy ostatniej bazy danych ( paanda00001 > paanda00002)
SELECT hosting_instance_db
FROM [platforma-api].[dbo].[hosting_instance]
order by 1 desc
- 2. na podstawie nazwy zakładamy baze danych
- sprawdzamy czy baza istnieje - double check
- create database…. na koncu dodajmy wpis potweirdzajacy ze abza zalaozona punkt 7
- 3.odpalenie skryptow platforma, paanda
- stworzenie schematow
- kolejnosc > tabel > widok > funkcje > procedury ….
- 5. przygotowanie skryptow Michał Derbin (procedury)
- configuration.configuration > configuration.configuration_setup
- document.documenttype > document.documenttype_setup
- common.dictionary > common.dicitonary_setup
- dbo.columns > dbo.columns_setup
- trzeba bedzie zsnychronizowac kod zrodlowy bazy platforma z wzorem (zeby pojawily sie skrypty)
- 6. uruchomienie skryptow szukamy procedury ktore koncza sie na setup ……. *_setup
- wyszukac z widokow systemowych
- uruchomienie kazdej osobno
- 7. dodanie do [dbo].[hosting_instance] nazwa zalozonej hosting_db, hosting_server
insert into hosting_instance
(hosting_instance_db,hosting_instance_server)
values
('paanda00002','192.168.0.200')
- marcin 8. WWW 6. dopiero jak uzytkownik potwierdzi wtedy
- dodaje sie kontrahent
- ustawia sie np instance.sales.seller na id kontrahenta
- 8. wyswietlenei na ekranie i zapisanie do pliku tekstowego osobno dla kazdego wywolania
- NAZWA PLIKU \log\20210101_1212_PAANDA0001.LOG
[OK ] 20210101-121230 DB START:: PAANDA001
[OK ] 20210101-121230 /functions/xmltotable.sql
[SKIP] 20210101-121230 /functions/xmltotabl1111.sql
[ERR ] 20210101-121230 /functions/xmltotabl2.sql
ERROR MESSAGE sadsadsadsadsadsadsadsadsaddsaasdsadasdas
- 9. obsługa PRIORYTETÓW priorytety.txt
domyslnie priorytet 10
5 ims.GetPelnaNazwa.sql #KOMENTARZEJRIUEWHIURHEWIUHRIUEWHRIUHEWRIU
0 ims.umowy_get.sql #tO bedize wylaczony polik
- 10. na koncu do logu czas trwania całej operacji zakłądanai jednej instancji
Kroki tryb manual
- app.exe --dbname nazwabazydanych --dsn Data Source=192.168.8.200; User ID=ffff;password=“ --scripts C:\git\paanda-db;C:\git\platforma-db
- parametry pobieramyu z linii komend jelsi ich nei ma z app.config
- jezeli w argumentach jest dbname w tedy z skrytpow tworzy sie baza o takim dbname
-nigdzie nei dodajemy wpisow twrozymy instancje zapisujemy do loga wychodzimy
Uwagi:
- Przy starcie programu informacja : nazwa + do czego sluzy + parametry wymagane
PAANDA DBBUILDER 1.0 ( pobrac numer z assembly) - W kodzie zrodlowym defaultowy plik app.config z przykladowymi wartosciami bez usernamem password
- jak najmneij ustawiwania programu czyli priorytety.txt czytamy z lokalizacji proramu ( env.ApplicationBasePath;)
Skryptowanie danych
Skrypt powinien
- miec xml w ktorym sa dane i insert
- sprawdzanie czy juz nei zostalo dodane
select * from common.dictionary row FOR XML auto,ELEMENTS
select
[dictionaryID], [dictionaryName], [dictionaryKey],
[dictionaryKeyGuid], [dictionaryValue],
[dictionaryUrl], [dictionaryOrder],
--[dictionaryXML],
[dictionaryDefaultValueInGroup], [dictionaryMasterKey],
--[groupID], [addDate], [addUsername], [modDate], [modUsername],
[status], [colorCode], [isSystem],
--[fullTextID],
[attrValRelatedItem], [attrValRelatedPrice], [accounting], [translate],
[decimalValue], [lastStep], [remotesource], [textValue]
--[translationIDChecksum]
from common.dictionary row FOR XML auto,ROOT('rows'), ELEMENTS