Показать сообщение отдельно
  #35 (permalink)  
Старый 28.10.2012, 20:47
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Наконец допилил версию 3.8! Кроме исправления различных багов в новой версии появились следующие фичи:
  • Появился новый метод query, который принимает на вход запрос в SQL синтаксисе;
  • Добавлена поддержка querySelectorAll (нативный DOM драйвер);
  • Увеличена скорость работы некоторых методов;
  • Теперь Collection сжимается в "продвинутом режиме" GCC;
  • Рефакторинг кода и комментариев (теперь комментарии полностью на русском языке, решил не выпендриваться );
  • Теперь this в колбеках ссылается на инстанс объекта, а для ссылки на саму функцию была добавлена локальная переменная callee.

Сайт снова работает, однако пока выпилил раздел доки, т.к. хочу её улучшить (пока можно читать комменты в исходниках, тем более, что дока генерится по ним), также пока нету главы в учебнике по методу query, но он, как и дока появится уже в течении недели.
Теперь на главной страничке сайта можно поиграться с консолью

По поводу метода query: сейчас он поддерживает только запросы типа SELECT. Есть поддержка переменных (через AS), INNER/LEFT/RIGHT JOIN, GROUP BY, ORDER BY, WHERE, HAVING, TOP, LIMIT, INTO, стат функции SUM/AVG/COUNT и множество строковых функций (можно добавлять свои), а также выполнения сразу нескольких запросов в одном методе (через ; ).

Примеры:
var db = new Collection();
db.pushCollection({
	users: [
		{id: 1, name: 'Kobezzza', lvl: 50},
		{id: 2, name: 'Onky', lvl: 55},
		{id: 3, name: 'Drobila', lvl: 60},
		{id: 4, name: 'Over', lvl: 70},
		{id: 5, name: 'Ten', lvl: 60}
	],
	
	skils: [
		{
			sid: 1,
			uid: 1,
			value: 'moto'
		},
		{
			sid: 2,
			uid: 2,
			value: 'auto'
		},
		{
			sid: 3,
			uid: 1,
			value: 'dance'
		}
	],
	
	buf: [
		{
			bid: 1,
			uid: 1,
			b_value: 'ice'
		},
		{
			bid: 2,
			uid: 2,
			b_value: 'fire'
		},
		{
			bid: 3,
			uid: 1,
			b_value: 'water'
		}
	]
});

db.query('SELECT * FROM `users`');
db.query('SELECT el.name, el.lvl FROM `users`');
db.query('SELECT el.name AS nm, el.lvl AS power FROM `users`');
db.query('SELECT * FROM `users`, `skils`');
db.query('SELECT * FROM `users` INNER JOIN `skils` ON id=uid INNER JOIN `buf` ON id=uid');
db.query('\
	SELECT TRIM(el.name) AS name, el.lvl, SUM(el.lvl) AS sum FROM `users`\
		INNER JOIN `skils` ON id=uid\
		INNER JOIN `buf` ON id=uid\
	GROUP BY lvl\
	HAVING sum > 55\
');
db.query('SELECT * FROM `users` WHERE el.lvl > 50 LIMIT 1, 1');
db.query('SELECT TOP 1 * FROM `users` WHERE el.lvl > 50');
db.query('SELECT * INTO `test` FROM `users` WHERE el.lvl > 50');


Буду рад услышать критику и замечания, а также отвечу на любые вопросы Спасибо за внимание.

ЗЫ: в версии 3.9 я добавлю поддержку новых хранилищ в браузере (IndexedDB, FlashStorage и т.д., чтобы была возможность хранить большие объёмы данных, вместо 5мб LocalStorage), поддержку популярных шаблонизаторов и закончу систему модульной сборки (можно будет через сайт подключать необходимые модули, чтобы не тащить лишний код).

ЗЫЗЫ: кому интересна логика работы метода query, то копать https://github.com/kobezzza/Collecti...ter/files/csql.
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 28.10.2012 в 21:54.
Ответить с цитированием