Jakieś 15-20 lat temu może zacząłem programować w C i C++. Pisałem proste programy do obróbki obrazu, obróbki dźwięku. To nie było to. Kończąc studia inżynierii mechanicznej na AGH, czułem niedosyt. Chciałem jeszcze się doszkolić z budowania oprogramowania. Dlatego wybrałem się na studia podyplomowe na UJ. Tam przeszedłem przez wiele języków programowania, wiele różnych metodologii tworzenia oprogramowania. Później podczas pracy w różnych korporacjach, wykorzystałem zdobyte umiejętności, tworząc to jakieś automatyzacje przyspieszające moją pracę. Podczas pracy w motoryzacji Borgwarner, wielokrotnie miałem okazję współpracować z Siemens nad aktualizacjami w ich programie. Często inżynierowie Siemens pytali mnie o funkcje, jakie by mi się przydały podczas pracy inżyniera wibroakustyki. Działało to też w drugą stronę, bo wielokrotnie ja zgłaszałem im ciekawe funkcje do wdrożenia.
Podczas pracy w startupie TANDIG jako produkt owner, też programowałem. I to całkiem sporo. Miałem za zadanie znaleźć system-język programowania, które będzie najlepsze dla naszego problemu. Testowałem wiele różnych rozwiązań. W pewnym momencie trafiłem na obiektową bazę danych NEO4J. Zamknąłem się na 2 miesiące w domu, praktycznie nie wychodziłem. Studiowałem strukturę, uczyłem się, pisałem swój kod, aż w końcu stworzyłem działające demo MVP. Pracownicy NEO4J podczas wyceny wdrożenia mojego programu chwalili sposób rozwiązania.
Poniżej wklejam wszystkie linijki kodu w CYPHER:
\NEO4J\neo4jDatabases\database-c479acc6-003b-47d6-a6fc-b439c423e6af\installation-4.0.1\import
MATCH (com:composer), (tra:track)
////RETURN com, tra
MERGE (com:composer)-[:composed]->(tra:track )
//START
//1
LOAD CSV FROM 'file:///X:/NEO4J/neo4jDatabases/database-c479acc6-003b-47d6-a6fc-b439c423e6af/installation-4.0.1/import/01_lodz_b.csv’ AS line
create (:track { name: line[1], track_id: line[0]} )
create (:composer { name: line[2], composed_track_id: line[0] })
create (:artist { name: line[3], reproduced_track_id: line[0]} )
//2
MATCH (t:track),(a:artist)
WHERE t.track_id = a.reproduced_track_id
CREATE (a)-[r:reproduced]->(t)
RETURN type(r)
//3
MATCH (t:track),(c:composer)
WHERE t.track_id = c.composed_track_id
CREATE (c)-[r:composed]->(t)
RETURN type(r)
//4
CREATE (pn:person { name: 'Paweł’, title: 'co-founder’, b_model: 'k_res’ })
CREATE (tb:firma { name: 'sztartup’, title: 'startup’ })<-[r:works_at]-(js:person {name:”Jarosław”, b_model: 'k_res’})
CREATE (pn)-[:works_at]->(tb)
CREATE (pn)-[:owns]->(tb)
CREATE (js)-[:owns]->(tb)
CREATE (pn)-[c:cooperate_with]->(js)
CREATE (js)-[:cooperate_with]->(pn)//
CREATE (product:demo { name: 'track_up’, title: 'software’, b_model: 'k_res’, b_model: 'cost’, b_model: 'revenue’ })
CREATE (soft:resource { name: 'neo4j’, b_model: 'k_res’, b_model: 'cost’ })-[de:devlope]->(product)
CREATE (cloud:resource { name: 'amazon’, b_model: 'k_res’, b_model: 'cost’})-[st:store]->(product)
create (pn)-[:programing {b_model:”cost”, b_model:”k_activ”}]->(product)
create (pn)-[:programing {b_model:”cost”}]->(cloud)
create (pn)-[:programing {b_model:”cost”}]->(soft)
CREATE (dj:DJ :customer { name: 'Trakmajster’, b_model: 'customer_DJ’ })-[ex:export]->(djlist1a:value:list_event:demo {name:”Lista 05 07 2019″})
create (dj)-[:is_registered_in]->(product)
create (dj)-[:export]->(djlist1b:value:demo:list_event {name:”Lista 01_03_2020″})
//create (dj)-[:export]->(djlist1c:value :demo :list_event {name:”Lista 22 07 2019″})
create (dj)-[:export]->(djlist1d:value :demo :list_event {name:”Lista 02_03_2020″})
create (dj)-[:export]->(djlist1e:value :demo :list_event {name:”Lista 03_03_2020″})
//CREATE (dj2:DJ { name: 'Funky’, b_model: 'customer_DJ’ })-[:export]->(djlist2a:value :demo :list_event {name:”Lista 11 07 2019″})
//create (dj2)-[:export]->(djlist2b:value :demo :list_event {name:”Lista 12 07 2019″})
//create (dj2)-[:export]->(djlist2c:value :demo :list_event {name:”Lista 23 07 2019″})
CREATE (place:place :customer { name: 'Lodz’, type:”club”, b_model: 'customer_place’ })-[re:receive]->(djlist2:value :list_event {name:”March 2020″})
CREATE (zaiks:firma :customer { name: 'zaiks’, title: 'Stowrzyszenie’, b_model:’customer_zaiks’ })
create (djlistmth:demo :list_mounth {name:”March Lodz 2020″, b_model:’k_res’ })-[:sent_to]->(zaiks)
create (place)-[:sent_to]->(product)
create (product)-[:export]->(djlistmth)
create (product)-[:sent_to]->(djlistmth)
create (product)-[:calculate]->(djlistmth)
//create (trala:track { name:”Trala la”})
//CREATE (aut:author :customer { name: 'Jan Kowalski’, b_model:’customer_author’ })-[:is_author_of]->(trala)
//CREATE (comp:composer :customer { name: 'Marek Nowak’, b_model:’customer_composer’ })-[iscom:is_composer_of]->(trala)
//CREATE (art:artist :customer { name: 'Rzepolisław’, b_model: 'customer_artist’ })-[isart:is_artist_of]->(trala)
//CREATE (trala)-[:is_registered_in]->(product)
//create (bla:track { name:”Bla la”})
//CREATE (aut)-[:is_author_of]->(bla)
//CREATE (comp)-[:is_composer_of]->(bla)
//CREATE (art)-[:is_artist_of]->(bla)
//CREATE (bla)-[:is_registered_in]->(product)
//create (ala:track { name:”ala ma cota”})
//CREATE (aut)-[:is_author_of]->(ala)
//CREATE (comp)-[:is_composer_of]->(ala)
//CREATE (art)-[:is_artist_of]->(ala)
//CREATE (ala)-[:is_registered_in]->(product)
//create (dj)-[:sent_to]->(product)
//create (dj2)-[:sent_to]->(product)
//CREATE (art)-[:is_registered_in]->(product)
//CREATE (comp)-[:is_registered_in]->(product)
//CREATE (aut)-[:is_registered_in]->(product)
//CREATE (dj2)-[:is_registered_in]->(product)
CREATE (zaiks)-[:is_registered_in]->(product)
CREATE (zaiks)-[:update]->(djlistmth)
CREATE (djlistmth)-[:sent_to]->(product)
CREATE (product)-[:calculate]->(tantiemy:demo {name:’tantiemy’, b_model: 'k_res’, b_model: 'cost’, b_model: 'revenue’})
create (djlist1b)-[:update]->(djlistmth)
create (djlist1e)-[:update]->(djlistmth)
create (djlist1d)-[:update]->(djlistmth)
//create (djlist2a)-[:update]->(djlistmth)
//create (trala)-[:update]->(djlist1b)
//create (trala)-[:update]->(djlist1e)
//create (trala)-[:update]->(djlist2a)
//create (trala)-[:update]->(djlist2c)
//create (ala)-[:update]->(djlist1b)
//create (ala)-[:update]->(djlist1e)
//create (ala)-[:update]->(djlist2a)
//create (tantiemy)-[:update]->(art)
//create (tantiemy)-[:update]->(comp)
//create (tantiemy)-[:update]->(aut)
create (dj)-[:played_at]->(place)
//create (dj2)-[:played_at]->(place)
//5
MATCH (t:track), (l:list_event)
WHERE t.list_name = l.listEventName
CREATE (t)-[r:made666]->(l)
RETURN type(r)
////////
MATCH (t:track),(l:list_event)
WHERE t.list_name = l.name
CREATE (t)-[r:made]->(l)
RETURN type(r)
// list_event_id:”Lista 01_03_2020″} to trzeba dopisać od innych list to klucz
// wyszkanie tylko tracków co mają id listy 01….
MATCH (t:track)//,(l:list_event_id)
WHERE t.list_name = 'Lista_01_03_2020′ //and wl:list_event_id = 'Lista_01_03_2020′
//CREATE (t)-[r:made]->(l)
//RETURN type(r)
return t.list_name
MATCH (t:track)
WHERE t.list_name = 'Lista_01_03_2020′
CREATE (t)-[r:made]->(djlist1b)
RETURN type(r)
MATCH (t:track),(djlist1b:value:demo:list_event {name:”Lista 01_03_2020″})
WHERE t.list_name = 'Lista_01_03_2020′
CREATE (t)-[r:mfffffffade]->(djlist1b:value:demo:list_event {name:”Lista 01_03_2020″})
RETURN type(r)
MATCH (l:list_event)
WHERE l.listEventName = 'Lista_01_03_2020′
RETURN l