touricity-server's People
touricity-server's Issues
Heroku Database kurulması
Database heroku database sunucularında tutulacak ve heroku database linkleri sunucuya parametre olarak verilecek
Lokasyon bilgisi getiren kontrolcü yazılacakır
Heroku web sunucu kurulması
Master'a yapılan her bir merge işleminin otomatik heroku sunucusuna entergere edilmesi sağlanacak
Register kontrolcüsü yazılacaktır
Kayıt olma kontrolcüsü aşağıdaki maddelere uygun oluşturulacaktır.
- Session id olmadan işlem yapılmayacaktır
- "/register" adresinde kontrolcü oluşturulacaktır
- Kayıt yapma işlemi başarılı olursa otomatik var olan session ile login olacaktır
- Herhangi bir hata oluştuğunda kullanıcıya bildirilecektir
- Mock arayüzüne eklenecektir
{
username:<String>,
password:<String>
}
- Cevap olarak onay veya hata mesajı dönecektir
(Planning) As a developer, I would like to create an ER diagram for the system data model so that a sample database can be created based on the model
Travis ci entegre edilecek
Generic hata kontrolcüsü yazılacaktır
IMessage interface'inden türetilmiş hata kontrolcüsü yazılacaktır. Hataların kodları kategorilere 100, 200, 300 başlangıç numaraları ile ayrılacaktır.
- İki adet attribute içermelidir
- Mock arayüzüne eklenmelidir, her hatanın kodu ve örnek mesajı kullanıcıya gönderilmelidir
{
code: <Integer>,
message: <String>
}
(Planning) As a developer, I would like to create an architectural overall diagram for the system showing the components and their event/API/database intersections
Temel mesaj tiplerinin mock arayüzü
Gelen json isteklerine hangi json sınıfları ile cevap döndürüleceğini simüle eden bir mock arayüzü oluşturulacaktır. Burada oluşturulan örnek mesajlar anlamlı olmalıdır. Fakat geçerliliği olmamalıdır. Yani herhangi bir id/username'nin database'te bir karşılığı olmamalıdır. Aşağıda hangi yoldan nasıl bir cevap alabileceğinin örneği verilmiştir.
/mock
- var olan mock arayüzlerinin path listesini döner
- örnek { Stop: "/mock/stop", Path: "/mock/path" ... }
/mock/stop
- anlamlı bir stop sınıfına uygun mesaj döndürülür
- örnek { stop_id: "c09fc4c0-cee5-4ce7-bf35-448917e7d8e9", location_id: "5c0ca3bb-638d-41ef-8e36-53a5b113d044" }
Ek özellik olarak ?random=true ise mesajların içerikleri rastgele oluşturulacaktır. Stringler için database'te tanımlı maksimum boyuta göre sınırlandırılacaktır.
/mock/stop?random=true
- örnek { stop_id: "47x474bcfpIEDWthjjskpclGFLVeXHTsR6qt", location_id: "8wPRFeBkfNGo6F6KMv6k5jWnm3SK0Fsj7BTY" }
Login/logout kontrolcüsü yazılacaktır
Login ve logout işlemlerinin gerçekleştirileceği kontrolcünün gereksinimleri aşağıda belirtilmiştir.
Login işlemi için var olan session id için login işlemi yapılacaktır.
- "/login" adresine sahip kontrolcü açılmalıdır
- Session id olmadan işlem yapmamalıdır
- Eski sessionlardaki login durumu kaybolmamalıdır
- Var olan session id değişmemelidir
- Var olan session başka bir hesaba login durumundaysa, diğer hesaptan çıkış yapıp yeni hesaba giriş yapmalıdır
- Var olan session giriş yapmış olduğu hesaba yeniden giriş yapmaya çalışıyorsa bir üstteki madde geçerlidir
- Kullanıcı adı ve şifre yanlışsa hata mesajı döndürmelidir
- Mock arayüzüne eklenmelidir
// örnek login isteği
{
username: <String>,
password: <String>
}
Logout için boş bir istek göndermek kullanıcıyı çıkış yaptırmalıdır
- "/logout" adresine sahip kontrolcü açılmalıdır
- Session id olmadan işlem yapmamalıdır
- Var olan session giriş yapmışsa çıkış işlemi gerçekleşir
- Var olan session giriş yapmamışsa hata mesajı döndürülür
- Mock arayüzüne eklenmelidir
// örnek logout isteği
{
// boş olabilir, attributelar önemsenmeyecektir
}
Bu iki isteğe de cevap olarak onay veya hata mesajları dönülecektir
Database güncellemesi
Şehir tablosu eklenecektir
- city_id
- name
Route tablosu güncellenecektir
- city_id
- title <String : max 70>
- description <String : max 1000>
- secret
Lokasyon tablosu güncellenecektir
- city_id
Database güncellemesi sonrasında yapılacaklar
- Eklenen tablo ve sütun isimleri database sınıfına eklenecektir
- Şehir sınıfı oluşturulacaktır
- route ve lokasyon sınıfları güncellenecektir
- şehir ismi getirme kontrolcüsü yazılacaktır
Generic Json request altyapısının hazırlanması.
Generic bir rest api gereksinimlerine uygun json request alma ve cevap gönderme altyapısnın hazırlanması.
Veritabanında tutulacak nesneler için Interface'ler tanımlanacaktır.
IRoute,IEntry,ILocation,IStop,IPath interface'leri tanımlanacaktır.
Temel sunucu altyapısının hazırlanması.
Cors ve rest api politikalarına uygun bir sunucu spring boot ile oluşturulacaktır.
Lokasyona yorum yazma kontrolcüsü yazılacaktır
Bir kullanıcının var olan bir lokasyona yorum yazabilmesini sağlayan kontrolcü oluşturulacaktır.
- Session id olmadan işlem yapılmaz
- Kullanıcı giriş yapmamışsa yorum yapamaz
- Gelen isteğe cevap olarak işlem başarılı ya da işlem başarısız cevabı döndürülür
- Mock arayüzü oluşturulacaktır
// request şablonu
{
location_id: <String>,
comment_dec: <String>
}
Path vertex bugfix
Route güncelleme kontrolcüsü yazılacaktır
Rotayı güncelleme işlemi yapan kontrolcü yazılacaktır. Hem rota oluşturma hem de rota güncelleme işlemlerini gerçekleştirebilecektir. Aşağıdaki maddelere uygun hazırlanacaktır.
- Sesion id olmadan işlem yapılmaz
- Kullanıcının giriş yapmasına gerek yoktur fakat güncellenmek istenen rota başka bir kullanıcıya ait ise giriş yapması gerekmektedir
- Gelen istekteki id bölümü null ise yeni rota oluşturulur
- Gelen istekteki id bölümü null değilse var olan rota ile karşılaştırma yapılır ve farklı olan kısımlar güncellenir
- Entrylerin için null olan id'ler için yeni entry'ler oluşturulur
- Cevap olarak rotanın tam hali kullanıcıya gönderilir
- Eğer hata varsa kullanıcıya hata mesajı gönderilir
Lokasyonu like etme kontrolcüsü yazılacaktır
Bir kullanıcının var olan bir lokasyonu like edebilmesini sağlayan kontrolcü oluşturulacaktır.
- Session id olmadan işlem yapılmaz
- Kullanıcı giriş yapmamışsa like yapamaz
- Gelen isteğe cevap olarak işlem başarılı ya da işlem başarısız cevabı döndürülür
- Mock arayüzü oluşturulacaktır
// request şablonu
{
location_id: <String>,
score: <Integer>
}
Database oluşturma sql dosyaları oluşturulacak
Sadece create table işlemlerinin bulunduğu bir sql dosyası bulunacak.
Tanımlanan veritabanı modelinde bulunan aşağıdaki sınıflar yazılacaktır.
ACOUNT:
- account_id
USER:
- account_id -> account_id in ACCOUNT
- username
- password
SESSION:
- account_id -> account_id in ACCOUNT
- session_id
ROUTE:
- creator ->account_id in ACCOUNT
- route_id
ENTRY:
- route_id -> route_id in ROUTE
- stop_id -> stop_id in STOP : null olabilir
- path_id -> path_id in PATH : null olabilir
- entry_id
- expense
- duration
- comment
PATH:
- path_id
- path_type
- vertices
STOP:
- location_id -> location_id in LOCATION
- stop_id
LOCATION:
- location_id
- latitude
- longitude
LIKE:
- account_id -> account_id in ACCOUNT
- like_id
- score
COMMENT:
- account_id -> account_id in ACCOUNT
- comment_id
- comment
LOCATION-LIKE:
- location_id -> location_id in LOCATION
- like_id -> like_id in LIKE
LOCATION-COMMENT:
- location_id -> location_id in LOCATION
- comment_id -> comment_id in COMMENT
ROUTE-LIKE:
- route_id -> route_id in ROUTE
- like_id -> like_id in LIKE
ROUTE-COMMENT:
- route_id -> route_id in ROUTE
- comment_id -> comment_id in COMMENT
Like bilgisi getiren kontrolcü yazılacaktır
Like bilgisini gönderen kontrolcü oluşturulacaktır
- Session id olmadan işlem yapılmaz
- Gelen isteğe cevap olarak like bilgisi ya da işlem başarısız cevabı döndürülür
- Mock arayüzü oluşturulacaktır
// request şablonu
{
like_id: <String>
}
// response şablonu
{
like_id: <String>,
account_id: <String>,
score: <Integer>
}
Rotayı kaydetme kontrolcüsü yazılacaktır
Veritabanındaki tablolarda bulunan isimlerin eklenmesi
Database'de bulunan bütün tabloların ve tablolardaki sütun isimlerinin database classına static final olarak eklenecektir.
Filtreli arama kontrolcüsü yazılacaktır
Route silme kontrolcüsü yazılacaktır
Gelen route id'ye sahip olan route'un silinmesini sağlayan kontrolcü oluşturulacaktır.
- Session id olmadan işlem yapılamaz
- route giriş yapmış kullanıcıya ait ise giriş yapmak zorunludur ve kullanıcı sadece kendi route'unu silebilir
- eğer route giriş yapmamış bir kullanıcıya aitse sadece route'u oluşturan session route'u silebilir
- Yanıt olarak işlem başarılı ya da başarısız cevabı verilir
// request şablonu
{
route_id: <String>
}
Generic database query altyapısı oluşturulacak.
Database'e gönderilecek query'lerin interfacelerinin hazırlanması.
QueryResult
- ResultSet getResultSet()
- bool isSuccessfull()
ISingleQuery
- String getQuery()
- void onError(String e)
- bool onResult(QueryResult result)
- ExecutionType getExecutionType()
IPipelinedQuery:
- Queue getQueries()
Yeni lokasyon oluşturma kontrolcüsü yazılacaktır
google places api'dai uuid alacak şekilde
Veritabanında tutulacak nesnelerin oluşturulması
Aşağıdaki hiyerarşiye uygun şekilde sınıflar oluşturularacaktır
Location implements ILocation
Route implements IRoute
Abstract Entry implements IEntry
Path extends Entry implements IPath
Stop extends Entry implements IStop
Rotaya yorum yazma kontrolcüsü yazılacaktır
Bir kullanıcının başka kullanıcının oluşturmuş olduğu rotaya yorum yapabilmesini sağlayan kontrolcü oluşturulacaktır.
- Session id olmadan işlem yapılmaz
- Kullanıcı giriş yapamışsa yorum yapamaz
- Gelen isteğe cevap olarak işlem başarılı ya da işlem başarısız cevabı döndürülür
- Mock arayüzü oluşturulacaktır
// request şablonu
{
route_id: <String>,
comment_dec: <String>
}
Route bilgisi getiren kontrolcü yazılacaktır
Var olan bir lokasyonun bilgilerini getiren kontrolcü oluşturulacaktır.
- Session id olmadan işlem yapılmaz
- Gelen isteğe cevap olarak route bilgisi ya da işlem başarısız cevabı döndürülür
- Mock arayüzü oluşturulacaktır
// response şablonu
{
route_id: <String>,
creator: <String>,
entries: [Array of T(Stop or Path)],
likes: [StringArray],
comments: [StringArray]
}
Cookie kontrolcüsü yazılacaktır
Her bir session'nın ayrı ayrı işlem yapabilmesi için bir cookie kontrolcüsü yapacaktır. Bu modülün amacı session id isteğinde bulunan cihazlara session id sağlamak ve herhangi bir işlem sırasında gelen session id'lerin valid olup olmadığını tespit edip kullanıcıya bildirmek.
Route'u like etme kontrolcüsü yazılacaktır
Bir kullanıcının başka kullanıcının oluşturmuş olduğu rotayı like edebilmesini sağlayan kontrolcü oluşturulacaktır.
- Session id olmadan işlem yapılmaz
- Kullanıcı giriş yapmamışsa like yapamaz
- Gelen isteğe cevap olarak işlem başarılı ya da işlem başarısız cevabı döndürülür
- Mock arayüzü oluşturulacaktır
// request şablonu
{
route_id: <String>,
score: <Integer>
}
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.