# -*- coding: utf-8 -*- ?
import sqlite3
import sys
from time import localtime as time

# данный модуль осуществляет работу с новостной базой даннх, а именно добавление и чтение новостей.


# добавление новости
def add_post(author, tag, src, description, label,img,txt ):

	date = ".".join(map(str,time()[0:3]))

	db = sqlite3.connect("news.db")
	with db:
		cursor = db.cursor()
		
		#добавляем новость в таблицу со всеми новостями
		cursor.execute("INSERT INTO allposts(author, tag, src, description, date, label,img,txt ) VALUES(?, ?, ?, ?, ?, ?, ?, ?);", (author, tag, src, description, date, label,img,txt ))

		# добавляем ссылку на новость (id) в таблицу с новостями по определенному тегу
		post_id = cursor.lastrowid
		cursor.execute("CREATE TABLE IF NOT EXISTS %s(id INTEGER PRIMARY KEY, post_id INT)" % tag)
		cursor.execute("INSERT INTO %s(post_id) VALUES(?)" % tag, (str(post_id),))

		return post_id


# получение определенного колличества новостей по определенному тегу
def get_posts(tag,page,count):

	posts = [] # список в который мы будем записывать новости

	db = sqlite3.connect("news.db")
	with db:
		cursor = db.cursor()

		# cursor.execute("SELECT id FROM allposts")
		# last_posts_id = cursor.fetchall()[-1][0]

		cursor.execute("SELECT post_id FROM %s WHERE id>? AND id<?" % tag,(page*count,(page*count+count)))

		# получаем id необходимых нам новостей
		posts_id = cursor.fetchall()


		if posts_id is not None:
			# по полученым id ищем новости в таблице со всеми новостями
			for post_id in posts_id:
				cursor.execute("SELECT * FROM allposts WHERE id = ?", (str(post_id[0])))
				row = cursor.fetchone()
				if row is not None:
					# преобразуем полученый кортеж в словарь (необходимо для шаблона)
					post = {}

					i = 0
					for val in ("id","author", "tag", "src", "description", "date", "label","img","txt"):
						post[val] = str(row[i])
						i+=1

					posts.append(post)

	return posts


# получение определенного колличества новостей из всех тегов
def get_allposts(page,count):

	posts = [] # список в который мы будем записывать новости

	db = sqlite3.connect("news.db")
	with db:
		cursor = db.cursor()

		cursor.execute("SELECT id FROM allposts")
		last_posts_id = cursor.fetchall()[-1][0]

		cursor.execute("SELECT * FROM allposts WHERE id<? AND id>?",(last_posts_id - page*count + 1,last_posts_id - (page*count+count)))
		rows = cursor.fetchall()[::-1] # переворачиваем, что бы сначала отображались последние новости
		if rows is not None:

			for row in rows:
				# преобразуем полученый кортеж в словарь (необходимо для шаблона)
				post = {}

				i = 0
				for val in ("id","author", "tag", "src", "description", "date", "label","img","txt", ):
					post[val] = str(row[i])
					i+=1
				posts.append(post)

	return posts
