Esempio n. 1
0
        // Возвращает текст и флаг завершенности этого текста для статьи с указанным именем
        public FinishedText GetArticleText(string articleName)
        {
            FinishedText res = new FinishedText();

            ExecuteSQLQuery
            (
                $"SELECT {Tables.Articles.text}, {Tables.Articles.finished} " +
                $"FROM {Tables.articles} " +
                $"WHERE {Tables.Articles.name} = {SQLStringLiteral(articleName)} " +
                $"LIMIT 1;",

                (reader) =>
            {
                if (!reader.HasRows)
                {
                    throw new System.Exception($"{articleName} is not found in database");
                }

                reader.Read();

                res.text     = reader.GetString(0);
                res.finished = TinyIntAsBool.BoolFromShort(reader.GetInt16(1));
            }
            );

            return(res);
        }
Esempio n. 2
0
        // Возвращает текст и флаг завершенности этого текста для художественного перевода с указанным языком, который принадлежит статье с указанным именем
        // В случае, если для такого языка нет художественного перевода - в поле text возвращаемой структуры будет null
        public FinishedText GetArtisticalTranslaionText(string articleName, string languageCode)
        {
            FinishedText res = new FinishedText();

            int articleId = -1;

            // запрашиваем articleId по articleName
            ExecuteSQLQuery
            (
                $"SELECT {Tables.Articles.id} " +
                $"FROM {Tables.articles} " +
                $"WHERE {Tables.Articles.name} = {SQLStringLiteral(articleName)} " +
                $"LIMIT 1;",

                (reader) =>
            {
                if (!reader.HasRows)
                {
                    throw new System.Exception($"{articleName} is not found in database");
                }

                reader.Read();

                articleId = reader.GetInt32(0);
            }
            );

            ExecuteSQLQuery
            (
                $"SELECT {Tables.ArtisticalTranslations.text}, {Tables.ArtisticalTranslations.finished} " +
                $"FROM {Tables.artisticalTranslations} " +
                $"WHERE {Tables.ArtisticalTranslations.articleId} = {articleId} and {Tables.ArtisticalTranslations.languageCode} = {SQLStringLiteral(languageCode)} " +
                $"LIMIT 1;",

                (reader) =>
            {
                // Если для этого языка еще нет перевода, то выходим. В этом случае будет значение по умолчанию (text = null)
                if (!reader.HasRows)
                {
                    return;
                }

                reader.Read();

                res.text     = reader.GetString(0);
                res.finished = TinyIntAsBool.BoolFromShort(reader.GetInt16(1));
            }
            );

            return(res);
        }
        // Возвращает текст и флаг завершенности этого текста для художественного перевода с указанным языком, который принадлежит статье с указанным именем
        // В случае, если для такого языка нет художественного перевода - в поле text возвращаемой структуры будет null
        public FinishedText GetArtisticalTranslaionText(string articleName, string languageCode)
        {
            FinishedText res = new FinishedText();

            int articleId = -1;

            // запрашиваем articleId по articleName
            ExecuteSQLQuery
            (
                $"SELECT {Tables.Articles.id} " +
                $"FROM {Tables.articles} " +
                $"WHERE {Tables.Articles.name} = {SQLStringLiteral(articleName)} " +
                $"LIMIT 1;",

                (reader) =>
                {
                    if (!reader.HasRows)
                        throw new System.Exception($"{articleName} is not found in database");

                    reader.Read();

                    articleId = reader.GetInt32(0);
                }
            );

            ExecuteSQLQuery
            (
                $"SELECT {Tables.ArtisticalTranslations.text}, {Tables.ArtisticalTranslations.finished} " +
                $"FROM {Tables.artisticalTranslations} " +
                $"WHERE {Tables.ArtisticalTranslations.articleId} = {articleId} and {Tables.ArtisticalTranslations.languageCode} = {SQLStringLiteral(languageCode)} " +
                $"LIMIT 1;",

                (reader) =>
                {
                    // Если для этого языка еще нет перевода, то выходим. В этом случае будет значение по умолчанию (text = null)
                    if (!reader.HasRows)
                        return;

                    reader.Read();

                    res.text = reader.GetString(0);
                    res.finished = TinyIntAsBool.BoolFromShort(reader.GetInt16(1));
                }
            );

            return res;
        }
        // Возвращает текст и флаг завершенности этого текста для статьи с указанным именем
        public FinishedText GetArticleText(string articleName)
        {
            FinishedText res = new FinishedText();

            ExecuteSQLQuery
            (
                $"SELECT {Tables.Articles.text}, {Tables.Articles.finished} " +
                $"FROM {Tables.articles} " +
                $"WHERE {Tables.Articles.name} = {SQLStringLiteral(articleName)} " +
                $"LIMIT 1;",
                
                (reader) =>
                {
                    if (!reader.HasRows)
                        throw new System.Exception($"{articleName} is not found in database");

                    reader.Read();

                    res.text = reader.GetString(0);
                    res.finished = TinyIntAsBool.BoolFromShort(reader.GetInt16(1));
                }
            );

            return res;
        }