Datastore | Taslak #18

Open
opened 2024-03-19 00:32:00 +03:00 by saqut · 0 comments
Owner
/**
 * 
 * 
 * `type`: temp, geçici veritabanı oluşturur (default); permanent, kalıcı veritabanı oluşturur
 * `id`: Veritabanının herkes tarafından ulaşılabilir linki
 * `expires`: Veritabanının silinmeye açık olacağı zaman dilimi
 * 
 * 
 */

let store = wsjs.datastore({
	type: 'temp',
	id: 'f1290186a5d0b1ceab27f4e77c0c5d68',
    expires: 10,
	primary: 'id'
});

/**
 * add işlevi verilen primary key ile birlikte veri kaydı işlemi yapar
 */

await store.add({
	id: '27',
	name: 'Hasan',
    surname: 'Can'
});

/**
 * set işlevi verilen primary key ile birlikte veri değiştirme gerçekleştirir yapar
 */

await store.set({
	id: '27',
	name: 'Hasan',
    surname: 'Can'
});

/**
 * get işlevi verilen primary key ile birlikte veri okuma işlemi gerçekleştirir
 */
const record = await store.get('27');


/**
 * remove işlevi verilen primary key ile birlikte veri silme işlemi gerçekleştirir
 */

await store.remove('27');
/**
 * > {
 * >    id: '27',
 * >    name: 'Hasan',
 * >    surname: 'Can'
 * > }
 */


/**
 * Verilerin tamamı ile işlem yapmak istediğinizde veya büyük hacimli verilerde
 * her kaydın ayrı ayrı alınıp işlenmesi ve atomik işlem gerçekleştirilmesi
 * stabiliyeti ve performansı artırır çökme riskini azaltır
 */


let collection = store.collection();

/**
 * 
 * filter, map, limit, order işlevleri tamamen tembel bir şekilde çalışırlar
 * filter, verileri tek tek alıp onaylanmış veriyi primary kolonlarını bellekte biriktirirler ve bir sonraki aşamaya getirir
 * map, tüm verileri veya filtrelenmiş verileri tekrar isteyerek tek tek dönüştürür bu sefer alınan verilerin tamamı bellekte tutulur
 * reduce, filter ile aynı mantıkta çalışır
 * get, map dışında tüm fonksiyonlarda tembel bir şekilde hedeflenmiş primary keyleri gerçek verilerini sunucudan ister
 * reverse, tüm sonuçları en yeniden en eskiye doğru ister
 */

let data = collection.reverse().filter(data => {
	return data.age > 18 ? true : false
}).map(data => {
	return data.name
}).get()


/**
 * filter, map, reverse gibi fonksiyonların kullandığı çekirdek fonksiyondur
 * Bir primary key, index ve direction (ilerleme yönü) tutarak gerektiğinde tüm veriyi
 * tek tek sunucudan okur, değiştirir veya siler
 */
let cursor = collection.cursor();

// cursoru sadece belirli kayıtlara ulaşması için filtreler diğer veriler sunucudan istenme<
cursor.readStatement({
	name: 'ultra'
});
// get ile şuankini okursunuz
await cursor.get(); // --> '25'
// next ile bir sonraki öğeyi indirirsiniz
await cursor.next(); // --> 'false'
await cursor.get(); // --> '26'
await cursor.next(); // --> 'false'
await cursor.get(); // --> '27'
await cursor.next(); // --> 'true'
// son öğeye gelindiğinde next false sonucunu döndürür
await cursor.get(); // --> null
// son öğeye geldikten sonraki getler null verir
await cursor.next(); // --> 'true'

// Şuanki veri indexini verir
await cursor.getIndex();  // 272
// Şuanki veriyi siler
await cursor.removeCurrent(id);
// Şuanki veriyi günceller
await cursor.updateCurrent(id,args);

await cursor.close()




store.subscribe(['add','change','remove'],async (action, details) => {
	switch(action)
	{
		case "add":{
			const record = await store.get(details.id);
			console.log("Yeni veri eklendi", record)
			break;
		}
		case "change":{
			const record = await store.get(details.id);
			console.log("Veri değiştirildi", record)
			break;
		}
		case "remove":{
			console.log("Veri değiştirildi", details.id)
			break;
		}
	}
});
```javascript /** * * * `type`: temp, geçici veritabanı oluşturur (default); permanent, kalıcı veritabanı oluşturur * `id`: Veritabanının herkes tarafından ulaşılabilir linki * `expires`: Veritabanının silinmeye açık olacağı zaman dilimi * * */ let store = wsjs.datastore({ type: 'temp', id: 'f1290186a5d0b1ceab27f4e77c0c5d68', expires: 10, primary: 'id' }); /** * add işlevi verilen primary key ile birlikte veri kaydı işlemi yapar */ await store.add({ id: '27', name: 'Hasan', surname: 'Can' }); /** * set işlevi verilen primary key ile birlikte veri değiştirme gerçekleştirir yapar */ await store.set({ id: '27', name: 'Hasan', surname: 'Can' }); /** * get işlevi verilen primary key ile birlikte veri okuma işlemi gerçekleştirir */ const record = await store.get('27'); /** * remove işlevi verilen primary key ile birlikte veri silme işlemi gerçekleştirir */ await store.remove('27'); /** * > { * > id: '27', * > name: 'Hasan', * > surname: 'Can' * > } */ /** * Verilerin tamamı ile işlem yapmak istediğinizde veya büyük hacimli verilerde * her kaydın ayrı ayrı alınıp işlenmesi ve atomik işlem gerçekleştirilmesi * stabiliyeti ve performansı artırır çökme riskini azaltır */ let collection = store.collection(); /** * * filter, map, limit, order işlevleri tamamen tembel bir şekilde çalışırlar * filter, verileri tek tek alıp onaylanmış veriyi primary kolonlarını bellekte biriktirirler ve bir sonraki aşamaya getirir * map, tüm verileri veya filtrelenmiş verileri tekrar isteyerek tek tek dönüştürür bu sefer alınan verilerin tamamı bellekte tutulur * reduce, filter ile aynı mantıkta çalışır * get, map dışında tüm fonksiyonlarda tembel bir şekilde hedeflenmiş primary keyleri gerçek verilerini sunucudan ister * reverse, tüm sonuçları en yeniden en eskiye doğru ister */ let data = collection.reverse().filter(data => { return data.age > 18 ? true : false }).map(data => { return data.name }).get() /** * filter, map, reverse gibi fonksiyonların kullandığı çekirdek fonksiyondur * Bir primary key, index ve direction (ilerleme yönü) tutarak gerektiğinde tüm veriyi * tek tek sunucudan okur, değiştirir veya siler */ let cursor = collection.cursor(); // cursoru sadece belirli kayıtlara ulaşması için filtreler diğer veriler sunucudan istenme< cursor.readStatement({ name: 'ultra' }); // get ile şuankini okursunuz await cursor.get(); // --> '25' // next ile bir sonraki öğeyi indirirsiniz await cursor.next(); // --> 'false' await cursor.get(); // --> '26' await cursor.next(); // --> 'false' await cursor.get(); // --> '27' await cursor.next(); // --> 'true' // son öğeye gelindiğinde next false sonucunu döndürür await cursor.get(); // --> null // son öğeye geldikten sonraki getler null verir await cursor.next(); // --> 'true' // Şuanki veri indexini verir await cursor.getIndex(); // 272 // Şuanki veriyi siler await cursor.removeCurrent(id); // Şuanki veriyi günceller await cursor.updateCurrent(id,args); await cursor.close() store.subscribe(['add','change','remove'],async (action, details) => { switch(action) { case "add":{ const record = await store.get(details.id); console.log("Yeni veri eklendi", record) break; } case "change":{ const record = await store.get(details.id); console.log("Veri değiştirildi", record) break; } case "remove":{ console.log("Veri değiştirildi", details.id) break; } } }); ```
saqut added reference refs/tags/v1 2024-04-05 09:21:00 +03:00
saqut removed reference refs/tags/v1 2024-04-05 09:21:03 +03:00
Sign in to join this conversation.
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: saqut/MWSE#18
No description provided.